我有一个应用程序,其中有几个Fragments
相互交互。有时我必须添加Fragment
,有时我会替换它。
有没有办法收听FragmentTransactions完成,所以每次添加/显示/替换片段时我都可以跟踪?
我已尝试fragmentManager.addOnBackStackChangedListener()
但未成功。
我想在所有这些onResume()
上做一些事情,但如果应用程序转到后台和前台我不应该对我的UI做任何事情。只有当我在他们之间互动时。
感谢任何帮助/策略。
修改 原因是我有一个将在当前片段中显示的叠加层。如果用户导航到任何其他片段,我需要此叠加层消失。
答案 0 :(得分:1)
如果我找到了你,你不需要每次都知道这一点 - 你只需要知道你的申请。如果是这样,编写FragmentHelper
类(或者如果你有的话,在你的Base片段类中添加一些方法)并用它包装FragmentManager
方法,包括。所有额外的逻辑,跟踪或其他所需的一切。
答案 1 :(得分:0)
FragmentManager.BackStackEntry
并通过在数组中保持对它的引用来关注getName()
,并且每当调用onBackStackChanged()
时,您将知道谁已被删除或添加。
Logic.edit
ArrayList<String> myNames; //will contain the tag id
// when onbackstackchanged is triggered
// get the one on top with getBackstackEntryAt(lastpos).getName()
//use that to check myNames.contains(String)
// i guess you can now put your logic in an if else statement