FragmentManager与FragmentTransactioin
来源:互联网 发布:淘宝安装工接单平台app 编辑:程序博客网 时间:2024/06/06 01:32
FragmentManager为Fragment的管理类:
FragmentManager能够实现管理activity中fragment.
通过调用activity的getFragmentManager()或者getSupportFragmentManager()取得它的实例
2、将fragment从后台堆栈中弹出, 使用 popBackStack() (模拟用户按下BACK 命令).
3、使用addOnBackStackChangeListener()注册一个监听后台堆栈变化的listener.
FragmentTransaction:
FragmentTransaction对fragment进行添加,移除,替换,以及执行其他动作。
获取FragmentTransaction实例:
在调用commit()之前, 你可能想调用 addToBackStack(),
将事务添加到一个fragment事务的back stack.
这个back stack由activity管理, 并允许用户通过按下 BACK 按键返回到前一个fragment状态.
调用 commit() 并不立即执行事务.
恰恰相反, 它将事务安排排期, 一旦准备好, 就在activity的UI线程上运行(主线程).
如果有必要,你可以从你的UI线程调用 executePendingTransactions() 来立即执行由commit()提交的事务.
但这么做通常不必要, 除非事务是其他线程中的job的一个从属.
注意:
FragmentManager能够实现管理activity中fragment.
通过调用activity的getFragmentManager()或者getSupportFragmentManager()取得它的实例
FragmentManager可以做如下一些事情:
1、使用findFragmentById() (用于在activity layout中提供一个UI的fragment)或findFragmentByTag()(适用于有或没有UI的fragment)
获取activity中存在的fragment,但是在fragmentTransaction将新的add的fragment操作提交前,且提交后不会立刻生效,是不能通过
FragmentManager的find功能函数去找到目标fragment的,因为还没加进去。
2、将fragment从后台堆栈中弹出, 使用 popBackStack() (模拟用户按下BACK 命令).
3、使用addOnBackStackChangeListener()注册一个监听后台堆栈变化的listener.
FragmentTransaction:
FragmentTransaction对fragment进行添加,移除,替换,以及执行其他动作。
获取FragmentTransaction实例:
FragmentManager fragmentManager = getFragmentManager();
在调用commit()之前, 你可能想调用 addToBackStack(),
将事务添加到一个fragment事务的back stack.
这个back stack由activity管理, 并允许用户通过按下 BACK 按键返回到前一个fragment状态.
调用 commit() 并不立即执行事务.
恰恰相反, 它将事务安排排期, 一旦准备好, 就在activity的UI线程上运行(主线程).
如果有必要,你可以从你的UI线程调用 executePendingTransactions() 来立即执行由commit()提交的事务.
但这么做通常不必要, 除非事务是其他线程中的job的一个从属.
注意:
当前的fragment崩溃消除后,程序回读取savedInstanseState中存储的数据,
来回调用show(),hide()方法,很容易导致fragment崩溃,需要重写空的FragmentActivity的onSaveInstansceState()方法即可,
或者调用commitAllowingStateLoss方法,直接跳过读取activity
的saveInstansceState这一过程都行。
还有一种很粗暴的的执行办法:
直接通过FragmentManager.beginTransaction创建一个新的执行实例对fragment集合进行新的操作,隐患是消耗一定量的内存,且
不稳定,不能判断丢失掉的saveINstatnceState何时造成影响
阅读全文
0 0
- FragmentManager与FragmentTransactioin
- Fragment与FragmentManager
- FragmentManager与FragmentTransaction
- FragmentManager
- FragmentManager
- FragmentManager
- FragmentManager
- FragmentActivity、Fragment、FragmentPagerAdapter与FragmentManager
- 选项卡FragmentManager与Radiogroup的编写
- android.app.FragmentManager 与 android.support.v4.app.FragmentManager带来的若干Error
- android.app.FragmentManager 与 android.support.v4.app.FragmentManager带来的若干Error
- (4.3.1.15)android.app.FragmentManager 与 android.support.v4.app.FragmentManager带来的若干Error
- 初入Android之FragmentManager的replace与add区别
- FragmentManager API
- FragmentManager讲解
- FragmentManager详解
- FragmentManager API
- Android | FragmentManager
- Nginx的一些基本功能极速入门
- How Many Tables HDU
- 重谈eixt(0),ExitProcess,和TerminateProcess的区别和联系
- MySQL 是什么?
- 出现device is not a touchscreen I understand
- FragmentManager与FragmentTransactioin
- IO流——记录异常信息、系统信息
- 数据结构 合集
- 线段树模板
- coursera《计算导论与C语言基础》第七周
- hadoop单节点安装
- LeetCode 268. Missing Number
- leetcode 647. Palindromic Substrings
- 使用PowerDesigner创建Mysql表的问题