Fragment的概念与使用(二)--构建灵活的Android应用UI

安卓重要UI组件之 Fragment 阅读详情


当你的应用需要支持很多种屏幕尺寸,你可以在不同的布局配置中重用你的Fragment组件在可用的屏幕尺寸上优化用户体验。

例如,在手持设备中一次只显示一个Fragment可能是一个合适的选择,当然在Pad设备中将两个Fragment拼在一起来填满更大尺寸的屏幕,同时为用户显示更多的信息。


在上图中,两个Fragment,配合不同的配置显示在不同尺寸的屏幕上的效果。

FragmentManager类提供了运行时在Activity上添加,移除或者替换Fragment的方法,从而可以制造出动态的体验。

在运行的Activity中添加一个Fragment


你可以在运行中的Activity中添加Fragment,如果你想在Activity的生命周期中改变Fragment。

FragmentManager类提供了运行时在Activity上添加,移除或者替换Fragment的方法,从而可以制造出动态的体验。

如果你的Activity允许Fragment被移除和替换,你需要在Activity的onCreate方法中添加初始化的Fragment(s)。

一个处理Fragment的重要原则,Fragment必须有一个在布局中有一个让其寄存的View容器,特别是对那些运行时的Fragment。

以下是一个布局文件,每次显示一个Fragment。为了用一个Fragment替换另外一个,Activity的布局文件包含一个空的FrameLayout,作为Fragment容器使用。

  1. res/layout/news_articles.xml:
  2. <FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3.    android:id="@+id/fragment_container"
  4.    android:layout_width="match_parent"
  5.    android:layout_height="match_parent" />

.

在Activity当中,利用getSupportFragmentManager()获取一个FragmentManager,以下是代码示例:

  1. import android.os.Bundle;
  2. import android.support.v4.app.FragmentActivity;
  3.  
  4. public class MainActivity extends FragmentActivity {
  5.     @Override
  6.     public voidonCreate(Bundle savedInstanceState) {
  7.        super.onCreate(savedInstanceState);
  8.         setContentView(R.layout.news_articles);
  9.  
  10.         // Checkthat the activity is using the layout version with
  11.         // thefragment_container FrameLayout
  12.         if(findViewById(R.id.fragment_container) != null) {
  13.  
  14.             //However, if we're being restored from a previous state,
  15.             // thenwe don't need to do anything and should return or else
  16.             // wecould end up with overlapping fragments.
  17.             if(savedInstanceState != null) {
  18.                return;
  19.             }
  20.  
  21.             // Create an instance of ExampleFragment
  22.            HeadlinesFragment firstFragment = new HeadlinesFragment();
  23.            
  24.             // Incase this activity was started with special instructions from an Intent,
  25.             // passthe Intent's extras to the fragment as arguments
  26.            firstFragment.setArguments(getIntent().getExtras());
  27.            
  28.             // Addthe fragment to the 'fragment_container' FrameLayout
  29.            getSupportFragmentManager().beginTransaction()
  30.                     .add(R.id.fragment_container,firstFragment).commit();
  31.         }
  32.     }
  33. }

Fragment替换


替换Fragment的流程和添加的流程类似,只不过需要利用replace方法替换add方法。

需要记住的是,当你是Fragment切换的时候,例如替换或者一处,最好让用户拥有返回或者撤销的机会

当你允许用户返回或者撤销Fragment操作的时候,你必须在调用FragmentTransaction之前调用addToBackStack。

以下是一个示例:

  1. // Create fragment and give it an argument specifying thearticle it should show
  2. ArticleFragment newFragment = new ArticleFragment();
  3. Bundle args = new Bundle();
  4. args.putInt(ArticleFragment.ARG_POSITION, position);
  5. newFragment.setArguments(args);
  6.  
  7. FragmentTransaction transaction =getSupportFragmentManager().beginTransaction();
  8.  
  9. // Replace whatever is in the fragment_container viewwith this fragment,
  10. // and add the transaction to the back stack so the usercan navigate back
  11. transaction.replace(R.id.fragment_container,newFragment);
  12. transaction.addToBackStack(null);
  13.  
  14. // Commit the transaction
  15. transaction.commit();
(八)安卓开发中的Fragment使用详解 Fragment是 Android 中的一种 UI 组件,代表 Activity 中的一个行为或一个 UI 部分。你可以将其看作是 Activity 的一个模块,具有自己的生命周期,并且可以独立于 Activity 存在。Fragment 的设计初衷是为了支持更大屏幕的设备(例如平板电脑),通过在同一个 Activity 中显示多个 Fragment,可以更高效地利用屏幕空间。 阅读详情

相关推荐

给汽车芯片做‘体检’:手把手教你用IEC62380和SN29500估算功能安全失效率

本文详细介绍了如何使用IEC62380和SN29500标准估算汽车芯片的功能安全失效率,涵盖基础认知、方法论对比及实战计算。通过具体案例演示两种标准的应用流程,帮助工程师准确评估半导体器件的可靠性,确保符合ISO 26262标准要求。

weixin_28725553的博客 458

在fragment 中无法实现getIntent()

在fragment 中使用方法getIntent(),报错Cannot resolve method getIntent()。 可以使用: getActivity().getIntent(); 或者,可以使用参数直接将数据传递给片段: Bundle args = new Bundle(); args.putBoolean("Key Answer", true); Fragment f = new YourFragment(); f.setArguments(args); 确保在将片段添加到Fragmen

m0_50539570的博客 1173

【SAP报错】BK128&K5112

在ECC中使用CO1F进行Progressive confirmation时,依次遇到了如下的报错。

weixin_45228526的博客 784

android的fragment中怎样getIntent()

Fragment中没有getIntent方法bai,需要通过Activity来。 可以du这样实现: Intent intent = getActivity().getIntent(); 这样就可zhi以在fragment中获取daoActivity的Intent

ShiXinXin_Harbour的博客 3432

【低空经济】无人机充电站设计方案

随着无人机技术的快速发展和广泛应用,其在物流、农业、巡检、救援等领域的应用日益普及。然而,无人机的续航能力一直是限制其大规模应用的关键因素之一。为了解决这一问题,无人机充电站的设计与建设显得尤为重要。本项目旨在设计一套高效、智能、可扩展的无人机充电站系统,以满足不同场景下无人机的充电需求,提升其作业效率和应用范围。无人机充电站的设计将围绕以下几个核心目标展开:首先,充电站应具备快速充电能力,以减少无人机的停机时间,提高作业效率;

2960

汽车安全新防线|基于AI的入侵检测系统开发(全网独家复现),CNN-BiLSTM融合改进篇 强化CAN总线数据感知、助力多类型入侵检测、实时响应预警、车载场景有效落地

基于AI的入侵检测系统是汽车网络安全领域的重要技术突破,能够有效应对日益复杂的网络攻击威胁。随着AI技术的不断发展和普及,AI入侵检测系统将在汽车安全领域发挥越来越重要的作用。对于汽车制造商和供应商来说,实施AI入侵检测系统不仅是保障车辆安全的需要,也是提升市场竞争力的重要手段。未来,AI入侵检测系统将成为智能汽车的标准配置,为用户提供更加安全、可靠的驾驶体验。

getusushu的博客 86

史上最全Fragment介绍,包括fragment的定义,生命周期,用法

一、为什么要使用Fragment 1、当我们需要动态的多界面切换的时候,就需要将UI元素和Activity融合成一个模块。在2.3中我们一般通过各种Activity中进行跳转来实现多界面的跳转和单个界面动态改变。在4.0或以上系统中就可以使用新的特性来方便的达到这个效果--Fragment类。Fragment类似一个嵌套Activity,可以定义自己的layout和自己的生命周期。 2、

想飞的企鹅 5987

从零开始学习CANoe(三)—— 系统变量的创建和使用

从零开始学习CANoe(三)—— 系统变量的创建和使用

蚂蚁小兵 1万+

Activity和Fragment的跳转

//Activity Intent intent = new Intent(InfoActivity.this,EmptyActivity.class);//EmptyActivity里面是viewpager+tablayout intent.putExtra("type",1);//1代表你要跳转的fragment下标,下标从0开始 startActivity(intent); //fragment所属的activity i

qq_46237697的博客 387

VI4302 1D dToF Sensor助力无人机定高避障:一场前所未有的飞行体验

另外,传感器因测量精度不够,产生的高度信息误差,会导致无人机无法精确定高,影响飞行稳定性和安全降落。芯视界于2022年发布的全新一代基于单光子探测技术的dToF激光雷达传感器芯片-VI4302,采用单电源低功耗系统,实现高性能测距、高稳定性,同时具备极强抗阳光能力以及兼容性等强大优势。无人机可以根据传感器提供的信息,快速调整飞行路径,避开潜在的障碍物,确保平稳的飞行。VI4302 1D dToF Sensor能够以极高的精度测量物体与无人机之间的距离,实现毫米级别的测量精度。⭐ 体型小巧,灵敏度高。

致力于lidar应用开发 622

网络安全 | 企业网络安全的十大挑战及解决方案

网络安全 | 企业网络安全的十大挑战及解决方案,随着信息技术的飞速发展,企业数字化转型进程不断加速,网络安全问题日益成为企业运营与发展面临的关键挑战。本文深入剖析企业网络安全的十大挑战,包括网络攻击日益复杂、数据泄露风险、内部威胁、物联网安全、云安全、合规性要求、移动办公安全、供应链安全、人才短缺以及安全预算有限等,并针对每个挑战详细阐述相应的解决方案,旨在为企业构建全面、有效的网络安全体系提供指导与参考,助力企业在复杂多变的网络环境中保障自身信息资产安全,实现可持续发展。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4万+

Activity与Fragment数据传递之Fragment从Activity获取数据 分类: ...

整理Fragment与Activity之间的数据交换,大体上包括三种: 1、Fragment从Activity获取数据 2、Activity从Fragment获取数据 3、Fragment之间获取数据 通常,如果Activity向不同的Activity传递数据,最常用的是通过Intent.putExtra()方法,将简单类型的数据或可序列化的数据保存在Intent对象中...

weixin_33851429的博客 515

符合DO-178C和DO-331的机载软件研制体系

DO-178C的核心要求软件开发生命周期:DO-178C定义了软件开发的生命周期过程,包括需求获取、设计、实现、验证和确认等。它为机载软件开发提供了一套系统化的指导,确保在开发过程中考虑安全性和可靠性。安全等级(DAL):根据系统的重要性,DO-178C将软件划分为不同的开发保障等级(DAL A到E),DAL A的要求最为严格,适用于关键安全功能,而DAL E的要求较低,适用于非关键功能。DO-178C在非基于模型软件开发中的应用。

qq_41854911的博客 980

Chapter2:使用Fragment灵活地构建UI

Chapter2:使用Fragment灵活地构建UI 文章目录Chapter2:使用Fragment灵活地构建UI2.1 选择动态的碎片式布局2.1.1添加可替换布局资源2.1.2 根据屏幕大小管理Fragment布局2.1.3 使用布局别名来消除冗余的布局2.2 设计灵活的Fragment2.2.1 拒绝高耦合2.2.2 抽象Fragments之间的关系2.3 预防使用Fragment时产生的意...

Abfahrt的博客 2966

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android Studio中fragment的应用

Fragment”(片段)一词常用于描述计算机程序中的一部分代码或功能,它通常是一段可重复使用的代码块,可以作为程序的一部分被多次调用。在Android开发中,Fragment是一个重要的概念,它是构建用户界面的可重用部分,用于将应用程序的功能划分为更小的模块,使应用程序更易于维护和测试。一个Fragment可以被多个Activity或者其他Fragments使用,也可以嵌套其他的Fragments,提高应用程序的代码可重用性和灵活性。Fragment是依赖于Activity的,不能独立存在的。

m0_66068597的博客 2891

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android之Fragment的概述和使用

Fragment的概述和使用 Android 自 3.0 版本开始引入了碎片的概念,它可以让界面在平板上更好地展示,支持更加动态和灵活的UI设计。 一、什么是碎片 碎片(Fragment)是一种可以嵌入在活动当中的 UI 片段,它能让程序更加合理和充分地利 用大屏幕的空间 Fragment表示应用界面中可重复使用的一部分。Fragment 定义和管理自己的布局,具有自己的生命周期,并且可以处理自己的输入事件。Fragment 不能独立存在,而是必须由 Activity 或另一个 Fragment 托管。Fr

Mq_sir的博客 7190

创建灵活的用户界面-Android Fragment

创建灵活的用户界面-android Fragment. Android Support Library(支持库)提供了包含一个API库的JAR文件,当你的应用运行在Android早期版本时,Support Library(支持库)允许你的应用使用最近版本的Android API。例如:Support Library提供了Fragment版本的API,这样你就可以在Android1.6(A

u013673422的专栏 561

Android Fragment★★

1.Fragment fragment译为“碎片”,是Android 3.0(API 11)提出的,最开始是为了适配大屏的平板。 Fragment看起来和Activity一样,是一个用户界面。可以结合多个Fragments到一个activity中,来构建一个有多方面功能的UI,还可以重用同一个Fragment在多个activities中。Fragment可以当成是activity的一个组件,每个Fragment有单独的生命周期,可以在activity运行时进行添加和移除Fragment。因此,相比较于a

zenmela2011的专栏 1万+

【Android Fragment】Fragment基础

1、fragment “分段”、“碎片”的意思,一般与Activity一起使用,嵌套在activity中表示为Activity界面的一部分。 2、它具有自己的生命周期,能接收自己的输入事件,并且您可以在 Activity 运行时添加或移除片段(有点像您可以在不同 Activity 中重复使用的“子 Activity”)。 3、当您将片段作为 Activity 布局的一部分添加时,它存在于 Act...

dev晴天的博客 8838

安卓训练-开始-使用 Fragment 构造动态 UI-构造灵活的 UI

构造灵活的 UI 上一课 下一课 这节课教你 在运行时添加 Fragment 到 Activity替换 Fragment 你还需要阅读 Fragments支持平板和掌上设备 试试 下载示例 FragmentBasics.zip 当你为支持大范围的屏幕尺寸设计你的应用时,你可以在不同的布局配置中重用你的

Kdjr3rbQB3Q的专栏 1315

【Fragment】安卓Android开发中的Activity、Fragment、Adapter

前面介绍了Activity,简单地说Activity代表着应用程序中的一个单独的屏幕或界面,用户可以与之交互。那么现在就再来了解一下Fragment。在安卓开发中,Fragment是一种可以嵌入到Activity中的可重用组件,用于构建灵活和模块化的用户界面。与Activity类似,Fragment具有自己的布局和生命周期,并且可以包含用户界面元素和逻辑。

weixin_67898144的博客 1528

Android 开发基础:使用 Fragment 构建动态 UI 界面

Android 开发基础:使用 Fragment 构建动态 UI 界面 前言 在 Android 应用开发中,Fragment 是一个非常重要的组件,它允许我们将 UI 划分为多个模块化的部分,从而实现更加灵活和动态的用户界面。本文将深入探讨如何利用 Fragment 来构建适应不同屏幕尺寸的动态 UI。 为什么需要动态 Fragment 随着 Android 设备屏幕尺寸的多样化,开发者面临着如...

gitblog_00469的博客 402

Android中的Activity与Fragment:深入解析与应用场景

在Android应用开发中,Activity和Fragment是两个核心概念,它们各自扮演着不同的角色,共同构成了用户界面的基础。理解并熟练掌握这两个组件的使用,对于开发高效、灵活且用户友好的Android应用至关重要。本文将深入解析Activity与Fragment的基本概念、区别、联系以及它们各自的应用场景。

招风的黑耳优快云 1860
上一篇: Fragment的概念与使用(一)--基本概念
下一篇: 一个很好的工具网站推荐
kernel_learner
博客等级 码龄15年 60粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值