Android--Fragment基本介绍
时间:2022-03-12 10:51
Android是在Android 3.0 (API level 11)開始引入Fragment的。
能够把Fragment想成Activity中的模块,这个模块有自己的布局。有自己的生命周期,单独处理自己的输入,在Activity执行的时候能够载入或者移除Fragment模块。
能够把Fragment设计成能够在多个Activity中复用的模块。
当开发的应用程序同一时候适用于平板电脑和手机时,能够利用Fragment实现灵活的布局,改善用户体验。
如图:
能够看到非常好的实现了效果,事实上这个效果曾经的博客中也出现过。在博客:,有兴趣能够看看。ps:为了代码的简洁,就不加入button的点击变化什么的了,主要解说功能了~~~
5、Fragment家族经常使用的API
Fragment经常使用的三个类:
android.app.Fragment 主要用于定义Fragment
android.app.FragmentManager 主要用于在Activity中操作Fragment
android.app.FragmentTransaction 保证一些列Fragment操作的原子性,熟悉事务这个词,一定能明确~
a、获取FragmentManage的方式:
getFragmentManager() // v4中,getSupportFragmentManager
b、基本的操作都是FragmentTransaction的方法
FragmentTransaction transaction = fm.benginTransatcion();//开启一个事务
transaction.add()
往Activity中加入一个Fragment
transaction.remove()
从Activity中移除一个Fragment,假设被移除的Fragment没有加入到回退栈(回退栈后面会具体说)。这个Fragment实例将会被销毁。
transaction.replace()
使用还有一个Fragment替换当前的,实际上就是remove()然后add()的合体~
transaction.hide()
隐藏当前的Fragment,不过设为不可见。并不会销毁
transaction.show()
显示之前隐藏的Fragment
detach()
会将view从UI中移除,和remove()不同,此时fragment的状态依旧由FragmentManager维护。
attach()
重建view视图。附加到UI上并显示。
transatcion.commit()//提交一个事务
注意:经常使用Fragment的哥们,可能会经常遇到这样Activity状态不一致:State loss这种错误。主要是由于:commit方法一定要在Activity.onSaveInstance()之前调用。
上述,基本是操作Fragment的全部的方式了,在一个事务开启到提交能够进行多个的加入、移除、替换等操作。
值得注意的是:假设你喜欢使用Fragment,一定要清楚这些方法,哪个会销毁视图,哪个会销毁实例,哪个只不过隐藏。这样才干更好的使用它们。
a、比方:我在FragmentA中的EditText填了一些数据。当切换到FragmentB时,假设希望会到A还能看到数据,则适合你的就是hide和show;也就是说。希望保留用户操作的面板。你能够使用hide和show。当然了不要使劲在那new实例,进行下非null推断。
b、再比方:我不希望保留用户操作。你能够使用remove(),然后add();或者使用replace()这个和remove,add是同样的效果。
c、remove和detach有一点细微的差别,在不考虑回退栈的情况下。remove会销毁整个Fragment实例,而detach则仅仅是销毁其视图结构,实例并不会被销毁。那么二者怎么取舍使用呢?假设你的当前Activity一直存在,那么在不希望保留用户操作的时候,你能够优先使用detach。
上述已经介绍完毕了Fragment经常使用的一些方法,相信看完。大家一定清楚了Fragment的产生理由,以及怎样使用Fragment。再依据API的解说。也能明确,以前为何认为Fragment会出现一些列乱七八槽的问题。终究是由于没有弄清楚其生命周期。
因为篇幅原因,剩下的内容留到下一篇了。
在下一篇,会介绍:
1、怎样管理Fragment回退栈
2、Fragment怎样与Activity交互
3、Fragment与Activity交互的最佳实践
4、没有视图的Fragment的用处
5、使用Fragment创建对话框
6、怎样与ActionBar。MenuItem集成等
參考:
相关推荐
- Android系统编程入门系列之界面Activity交互响应
- 新型横向移动工具原理分析、代码分析、优缺点以及检测方案
- uni-app滚动视图容器(scroll-view)之监听上拉事件
- uniapp h5,app两端复制文本
- Android系统编程入门系列之界面Activity响应丝滑的传统动画
- 【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
- 诺基亚短信生成!太好玩了
- iOS 跳转App Store进行评分
- 开发一个即时通讯App
- 关闭苹果IOS app自动更新
电脑软件
本类排行
- 1关闭苹果IOS app自动更新
- 2iOS 跳转App Store进行评分
- 3诺基亚短信生成!太好玩了
- 4Android系统编程入门系列之界面Activity响应丝滑的传统动画
- 5uniapp h5,app两端复制文本
- 6uni-app滚动视图容器(scroll-view)之监听上拉事件
- 7新型横向移动工具原理分析、代码分析、优缺点以及检测方案
- 8Android系统编程入门系列之界面Activity交互响应
- 9开发一个即时通讯App
- 10【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn