码迷,mamicode.com
首页 > 编程语言 > 详细

java.lang.IllegalStateException: Fragment already added:

时间:2015-03-30 18:25:06      阅读:411      评论:0      收藏:0      [点我收藏+]

标签:

Fragment 相关API

getSupportFragmentManager().popBackStack()

getFragmentManager().getBackStackEntryCount 其是操作谁的,当一个activity初次显示的时候,其是0还是1.

Fragment 具体有几个stack, 前端界面显示stack, 和后端缓存的stack

backStack 其属于哪一个stack

 

Activity, fragment, stack 其之间的关联是什么

 

FragmentManager的作用

1. 代activity管理所有fragment行为操作. 反过来推论:要想以于Fragment与activity发生关联,就必须通过fragmentManager

2. 具体操作: 对于activity当中所有fragment进行删改查

3.fragmentManger:以stack这种数据结构来管理所有Fragment.为什么要用stack.界面的切换一般均要stack的方式进行的。如进入返回

activity当中有几种类型的fragment呢。这几种类型之间的关联。相关的操作API是什么。

1. 一个activity可以同时显示多个fragment, 这是也就是有些操作,不方便统一实现 ,如Fragment来直接处理backpress, activity并不能直接知道当中前哪些Fragment是可视的,或者唯一可视的。

 

 

4. 查:findFragmentById()或findFragmentByTag() 是用来查找activity当中的fragment, 要查找的时候,就可以使用这个方法。

其在哪里面查找: 应该是backstack当中。推论: 每一个activity其只是是backstack. 当前fragment在backstack当中没有

 

5.删除: 删除哪个,为什么会要删除, 删除:回退删除,指定删除

popBackStack(): 回退删除,注意此方法为异步方法,其只是就请求发送到消息队列当中,当这个动作直到应用回到事件循环当中才执行。注意:如果此时队列当中还有对于fragment操作,可能会引起异常,我就遇到了java.lang.IllegalStateException: Fragment already added。 程序当中的具体业务在对于fragment进行操作的时候,要添加判断。

6. 增: add, remove, show,hide 其之间的相同点,不同点,各自的应用场景

且注意:与addToBackStack之间的关联,如add 与addToBackStack

如: 当前为A fragment 需要切换到B fragment

相同点: 均是将B对于activity当中

不同点: 对于A的处理

 

对于:add方式

 

1. 当前fragment

2. fragment popbackstack 与backkey

 

getSupportFragmentManager().

 

FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();

ft.add()

ft.addToBackStack(null): 为什么是传入null

ft.commit()

 

manager.popBackStackImmediate()

1. popBackStack 与addToBackStack一定要匹配使用,

注意:当在切换fragment的时候,没有将之前的fragment加入到backStack,那调用popBackStack就不会有作用,界面效果就是没有切换。

 

2. replace与addToBackStack 和add与addToBackStack之间区别

相同点:

 

不同点:

 

After replacing Fragment, Activity still detects Fragment is visible

 

 

http://blog.csdn.net/mobilexu/article/details/11711865

http://www.cnblogs.com/mengdd/archive/2013/01/09/2853254.html

http://so.csdn.net/so/search/s.do?ref=toolbar&q=fragment+%E5%88%86%E6%9E%90&ref=toolbar&q=fragment+%E5%88%86%E6%9E%90

http://blog.csdn.net/liu470368500/article/details/38145601

java.lang.IllegalStateException: Fragment already added:

标签:

原文地址:http://www.cnblogs.com/pengxinglove/p/4378611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!