java.lang.IllegalStateException: Fragment already added:


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM