我使用replace()
和addToBackStack(
)来显示片段,使用popBackStack(tag,0)
来显示片段。但在使用replace()
之前,我会尝试找出fragmentManager.findFragmentByTag()
是否可以找到相同的片段,如果找到它,我会将popBackStack(tag,0)
替换为replace()
。
例如:
活动开始 - >替换AFragment
并添加到BackStack->点击按钮以替换BFragment
并添加到BackStack->单击按钮到popBackStack(AFragment.tag,0)
以弹出{{1}并返回BFragment
。
如果例外,它适用于AFragment
,replace()
,pop()
,replace()
,pop()
,replace()
...,但有时它适用于pop()
,replace()
,{突然pop()
,所以fragmentManager.findFragmentByTag!=null
,然后没有错误,它不起作用}。
我尝试调试,发现pop()
中的mBackStack.size()
和mActive.size()
不相等。当我想显示FragmentManagerImp
时,BFragment
包含A和B片段,但mActive
仅包含mBackStack
(替换A片段的事务)。因为我可以在AFragment
中找到BFragment
(使用mActive
),但找不到关于fragmentManager.findFragmentByTag
的交易,因此BFragment
失败。
pop()