如何只收听Fragment Backstack Pop?

时间:2016-12-06 00:06:33

标签: android android-fragments fragmentmanager

我想知道片段何时从后台弹出。

我的代码如下

private void setupChildFragmentPopListener() {
    getChildFragmentManager().addOnBackStackChangedListener(
            new FragmentManager.OnBackStackChangedListener() {
                @Override
                public void onBackStackChanged() {
                    // Do whatever I want
                }
            });
}

但是,这个代码在add和pop片段时都被触发了。我怎么能有办法只听流行片段?或者在onBackStackChanged()函数中过滤掉它的方法,如果它不是pop?

2 个答案:

答案 0 :(得分:3)

每次调用onBackStackChanged()时,您都可以记录后台条目的数量并进行比较。

private void setupChildFragmentPopListener() {
    getChildFragmentManager().addOnBackStackChangedListener(
            new FragmentManager.OnBackStackChangedListener() {
                @Override
                public void onBackStackChanged() {
                    int backCount = getChildFragmentManager().getBackStackEntryCount();
                }
            });
}

答案 1 :(得分:0)

对于Kotlin爱好者:

supportFragmentManager.addOnBackStackChangedListener {
    if (supportFragmentManager.backStackEntryCount == 0) {
        fab.visibility = VISIBLE
    }
    // Other magic
}