我正在开发一个只使用单个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
答案 0 :(得分:0)
我设法解决了我遇到的问题。这是一个非常简单的错误。
因为我不是这段代码的原作者,所以我彻底完成了MainActivity。
事实证明,原始作者在setDisplayHomeAsUpEnabled
函数中调用了onCreate
(非常长),但在接近结尾的时候,他还调用了setSupportActionBar
,它首次调用{{1}无用的。 移动setDisplayHomeAsUpEnabled
以下setDisplayHomeAsUpEnabled
解决了我的问题。
如果您正确执行了所有操作,请确保以正确的顺序编写代码。
此外,如果您在其他片段中使用自定义工具栏,请务必通过调用MainActivity的setSupportActionBar
中的setSupportActionBar(toolbar.find(this))
来设置原始支持操作栏。