Android 根据 backstack 计数显示后退按钮

Android show back button depending on backstack count

我想根据当前的后台堆栈条目数显示或隐藏操作栏的后退按钮。这意味着我想在 backstack 中有片段(或更多)时显示它,并在 backstack 为空时隐藏

getSupportActionBar().setDisplayHomeAsUpEnabled(b);

问题是,当我开始一个新片段并询问当前的backstack 条目计数时,它仍然和以前一样。它会在几毫秒后刷新。

同样在start fragment的onResume方法中,在backstack中仍然找不到被替换的fragment,backstack count还是一样。

目前我有一个 AsyncTask,它会在 50 毫秒后刷新按钮。有效,但这不是一个好的解决方案。

有什么想法吗?

此致


编辑:
解决方案是

fragmentManager.addOnBackStackChangedListener(...)

不需要 AsyncTask 你已经有一个 Backstack 接口,当添加或删除 Fragment 时会触发 onBackStackChangeListener 所以不要调用实现它并调用 getBackstackEntryCount() 如果它不是 0 那么你知道你会做什么

hen I start a new fragment and ask for the current backstack entry count, it's still the same like before

您需要在 add()replace() 调用您的 FragmentTransaction 之后将您的交易添加到 Backstack,例如 .addToBackstack("the identifier")

some indirect post

希望对您有所帮助