-
FragmentTransaction.add()
id.content
上的fraga -
FragmentTransaction.replace()
,addToBackStack
fragbid.content
-
FragmentTransaction.replace()
fragcid.content
问题发生为:
- 单击
System back
->我们将看到Fraga正在重新创建,但 Fragc仍然活着
这是由于我们单击System back
按钮时,我们在上面的第二个操作的交易中恢复了交易。我们将 destroy
fragb而不是destroy
fragc。Fragc还活着,这就是我不想要的。
其中一种解决方案是在活动中实现backStackListener
,而当backStack
为0时,我然后通过代码删除Fragc。
另一个是在任何replace()
事务之前,我们致电popBackStack()
以删除先前的事务。我们在随后的每项交易中应用addBackStack()
。但是,缺点是每次我们致电popBackStack()
时,它都会调用以前片段的onResume()
,这也不令人愉快。
有人可以就如何更好地应对这一点建议我有更好的解决方案?真的很感激!
最后,我采用的方法是删除fragc 当OnBackStackListener
检测到后堆栈计数时,将其更改为0。