Android ActoinBar homeAsUp 只工作一次

Android ActoinBar homeAsUp only works once

我正在开发一个应用程序,它只使用一个 Activity 并根据导航抽屉的需要切换片段。 现在我们要使用 ActionBar 中的 homeAsUp 按钮从这些片段之一导航回来。

我已按照所有步骤设置按钮。从禁用导航抽屉 setDrawerIndicatorEnabled(false) 到在片段的 onCreateView() 中调用 setDisplayHomeAsUpEnabled(true)。 我还在 MainActivity 的 onCreate() 中设置了 setHomeButtonEnabled(true),但是因为该应用程序已经在 MainActivity 中,我们无法指定父级 Activity。

每当我 运行 全新安装该应用程序时,homeAsUp 按钮都会工作并在 onBackPressed() 而不是 onOptionsItemSelected() 方法中注册。但是,当我关闭应用程序并再次 运行 时,按钮甚至没有注册点击。

onBackPressed()中我检查了一些条件,但它不会阻止按钮按下。 在 onOptionsItemSelected() 我检查 android.R.id.home.

不幸的是,我不能post代码。

这个 post 描述了我正在努力实现的目标:Switching between Android Navigation Drawer image and Up caret when using fragments

我设法解决了我遇到的问题。这是一个非常简单的错误。 因为我不是这段代码的原作者,所以我彻底检查了 MainActivity。 原来作者在onCreate函数中调用了setDisplayHomeAsUpEnabled(超长),但是临近尾声他又调用了setSupportActionBar,第一次调用了[=10] =]没用。 setDisplayHomeAsUpEnabled 移动到 setSupportActionBar 下面解决了我的问题。

如果您做的一切都正确,请确保您的代码以正确的顺序编写。

此外,如果您在其他片段中使用自定义工具栏,请记住通过在 MainActivity 的 onResume 中调用 setSupportActionBar(toolbar.find(this)) 来设置您的原始支持操作栏。