管理Fragments
2015-09-08 19:13
357 查看
FragmentManager
为了管理Activity中的fragments,需要使用FragmentManager.为了得到它,需要调用Activity中的getFragmentManager()方法。
因为FragmentManager的API是在Android 3.0,也即API level 11开始引入的,所以对于之前的版本,需要使用support library中的FragmentActivity,并且使用getSupportFragmentManager()方法。
用FragmentManager可以做的工作有:
得到Activity中存在的fragment:
使用findFragmentById()或findFragmentByTag()方法。
将fragment弹出back stack:
popBackStack():将back stack中最后一次的fragment转换弹出。如果没有可以出栈的东西,返回false。
这个函数是异步的:它将弹出栈的请求加入队列,但是这个动作直到应用回到事件循环才会执行。
为back stack加上监听器:
addOnBackStackChangedListener()
Performing Fragment Transactions
使用Fragment时,可以通过用户交互来执行一些动作,比如增加、移除、替换等。所有这些改变构成一个集合,这个集合被叫做一个transaction。
可以调用FragmentTransaction中的方法来处理这个transaction,并且可以将transaction存进由activity管理的back stack中,这样用户就可以进行fragment变化的回退操作。
可以这样得到FragmentTransaction类的实例:
FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
每个transaction是一组同时执行的变化的集合。
用add(), remove(), replace()方法,把所有需要的变化加进去,然后调用commit()方法,将这些变化应用。
在commit()方法之前,你可以调用addToBackStack(),把这个transaction加入back stack中去,这个back stack是由activity管理的,当用户按返回键时,就会回到上一个fragment的状态。
比如下面的代码就是用一个新的fragment取代之前的fragment,并且将前次的状态存储在back stack中。
ExampleFragment.java
它的布局:
example_fragment_layout.xml
第二个fragment:
NewFragment.java
new_fragment_layout.xml
主Activity:
LearnFragment.java
activity_learn_fragment.xml
资源:
strings.xml
程序运行截图:
参考资料:
API Guides:Fragmentshttp://developer.android.com/guide/components/fragments.html
FragmentManager类文档:
http://developer.android.com/reference/android/app/FragmentManager.html
FragmentTransaction类文档
http://developer.android.com/reference/android/app/FragmentTransaction.html
相关文章推荐
- HDU 1862 EXCEL次序 (排序水问题)
- hdu 5428 The Factor
- JSON基础
- iOS:多个单元格的删除(方法一)
- appium 源码分析(十二)-pressKeyCode,LongPressKeyCode
- hdu 5245 Joyful(期望的计算,好题)
- Masonry
- POJ 1064(二分)
- iOS-CGContextRef画各种图形例子
- spark core源码分析13 异常情况下的容错保证
- 可扩展、高可用、负载均衡网站架构设计方案
- iOS-CGContextRef画各种图形例子
- 每日一“结”(1)
- UC/OS II事件管理(1)
- 静态库没有更新
- 【offer感悟】本科生如何才能进入BAT等一流的互联网公司(软件工程师等研发方向)?
- tcxtreelist Properties的使用(TcxImageComboBoxProperties)
- 男人护肝有三个秘方
- uva116
- activity注册的问题,无法正常显示