【问题标题】:How to listen to Fragment Backstack Pop only?如何只收听 Fragment Backstack Pop?
【发布时间】:2016-12-06 00:06:33
【问题描述】:

我想知道 Fragment 何时从 backstack 中弹出。

我的代码如下

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

但是,在添加和弹出片段时都会触发此代码。我怎么有办法只听流行片段?或者在onBackStackChanged()函数不弹出的情况下过滤掉?

【问题讨论】:

    标签: android android-fragments fragmentmanager


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的帮助!
    【解决方案2】:

    对于 Kotlin 爱好者:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-07
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      相关资源
      最近更新 更多