Android ActoinBar homeAsUp仅适用一次

时间:2017-07-10 10:00:56

标签: android android-fragments android-actionbar android-event

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

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

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

onBackPressed()我检查了几个条件,但它没有阻止按下按钮。 在onOptionsItemSelected()我检查android.R.id.home

不幸的是,我无法发布代码。

这篇文章描述了我想要实现的目标:Switching between Android Navigation Drawer image and Up caret when using fragments

1 个答案:

答案 0 :(得分:0)

我设法解决了我遇到的问题。这是一个非常简单的错误。 因为我不是这段代码的原作者,所以我彻底完成了MainActivity。 事实证明,原始作者在setDisplayHomeAsUpEnabled函数中调用了onCreate(非常长),但在接近结尾的时候,他还调用了setSupportActionBar,它首次调用{{1}无用的。 移动setDisplayHomeAsUpEnabled以下setDisplayHomeAsUpEnabled解决了我的问题。

如果您正确执行了所有操作,请确保以正确的顺序编写代码。

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