有没有办法收听FragmentManager的FragmentTransactions?

时间:2015-05-27 21:46:56

标签: android android-fragments fragmentmanager

我有一个应用程序,其中有几个Fragments相互交互。有时我必须添加Fragment,有时我会替换它。

有没有办法收听FragmentTransactions完成,所以每次添加/显示/替换片段时我都可以跟踪?

我已尝试fragmentManager.addOnBackStackChangedListener()但未成功。

我想在所有这些onResume()上做一些事情,但如果应用程序转到后台和前台我不应该对我的UI做任何事情。只有当我在他们之间互动时。

感谢任何帮助/策略。

修改 原因是我有一个将在当前片段中显示的叠加层。如果用户导航到任何其他片段,我需要此叠加层消失。

2 个答案:

答案 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