安卓:当片段从后堆栈中弹出时调用哪个方法

3

我在Stack Overflow上进行了研究,但似乎没有找到解决方案。

我有一个MainActivity和几个Fragment,我正在使用“replace”方法执行Fragment事务,并将相应的Fragment添加到backstack中,但我的问题是当我从back stack中弹出它时,我想要检查一些内容,看看哪个回调被调用。从back stack中弹出时不会调用onResume()方法。

求助!


请查看片段生命周期:http://developer.android.com/guide/components/fragments.html - bGorle
1个回答

13

只需按照以下步骤进行:

getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener()
    {
        public void onBackStackChanged() 
        {                   
            // Your logic here               
        }
    });

每当后退堆栈发生更改时,都会调用此回调函数 - 即使添加了一个片段也是如此。如果您想知道何时删除了一个片段,请添加以下逻辑

Fragment someFragment = (Fragment)getSupportFragmentManager().findFragmentById(R.id.fragmentItem);

if (someFragment == null) {
   // this fragment was removed from back stack
}

1
为什么在片段第一次初始化时也会调用它? - Ravi
谢谢,Marky。 我在思考将上述方法定义在Activity还是Fragment中更好? - Ravi
你的活动一定 - MarkySmarky
终于我找到了解决方案...谢谢帮助。 - Ravi
1
addOnBackStackChangedListener会在返回栈发生变化时被调用!因此,无论是addBackStack还是popBackStack都会触发此事件。 - Jongz Puangput
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接