有没有一种方法可以在片段中检查popBackStack调用

3

我有几个片段的后退栈,我需要知道我从另一个返回到其中一个。

就像你有onActivityResult时一样,我想知道是否可以在片段中检查popBackStack()调用?

我在这里调用它:

@Override
public void postFinished(){
    getFragmentManager().popBackStack();
}

在Android Java中有类似的东西吗?

返回堆栈更改监听器是唯一的方法,就像@SHIDHIN.T.S在下面发布的答案一样。 - Akshay Paliwal
3个回答

4

您可以在Activity页面上添加BackStackChange监听器,例如:

     getSupportFragmentManager().addOnBackStackChangedListener(
            new FragmentManager.OnBackStackChangedListener() {
                public void onBackStackChanged() {

                       // Your Code Here

                }
            });

2
 getSupportFragmentManager().addOnBackStackChangedListener(
                new FragmentManager.OnBackStackChangedListener() {
                    public void onBackStackChanged() {
                        FragmentManager fm = getSupportFragmentManager();

                        if (fm != null) {
                            int backStackCount = fm.getBackStackEntryCount();
                            if (backStackCount == 0) {


                            }
                        }
                    }
                });

您可以使用 addOnBackStackChangedListenerfm.getBackStackEntryCount();,这将返回片段的后退栈计数。

0
you can do in onViewCreated() method:

if (savedInstanceState == null && !mAlreadyLoaded) {
    mAlreadyLoaded = true;

    // Do this code only first time, not after rotation or reuse fragment from backstack
}
Because when android put fragment on backstack, it only destroy its view, but don't kill instance itself, so mAlreadyLoaded will be still true when fragment will be restored from backstack.

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