如何只听 Fragment Backstack Pop?

How to listen to Fragment Backstack Pop only?

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

我的代码如下

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

但是,这段代码在添加和弹出片段时都会被触发。我怎么能有办法只听 pop fragment 呢?或者在onBackStackChanged()函数中过滤掉不pop的方法?

您可以对后台堆栈条目进行计数,并在每次调用 onBackStackChanged() 时进行比较。

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

Kotlin 爱好者:

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