您的位置:首页 > 博客中心 > APP开发 >

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集成等


參考:

相关推荐

电脑软件

本类排行

今日推荐

热门手游