无法自定义Actionbar的向上导航方法

时间:2018-02-07 05:08:19

标签: android android-actionbar kotlin

在活动类中,我将动作栏设置为:

MyActivity

Code execution cannot proceed because libquickmail-0.dll was not found

因为我需要覆盖setSupportActionBar(findViewById(R.id.toolbar_my)) supportActionBar?.apply { setDisplayHomeAsUpEnabled(true) setDisplayShowHomeEnabled(true) } (在片段类中),所以我没有覆盖onOptionsItemSelected(...)。 这个活动有一个片段。我想要的是,当点击动作栏向上按钮时,除了弹出后,还撤销自定义save()方法。

因此,在片段onSupportNavigateUp()中,为onOptionsItemSelected(...)案例编写一些代码。但是,我在这里提出了一个断点,并发现当单击up / home按钮时,item.id == android.R.id.home情况下的代码永远不会被撤销。其他项目'选定的方法工作。

在片段类中:

MyFragment

android.R.id.home

我尝试覆盖activity类中的另一个 override fun onOptionsItemSelected(item: MenuItem?): Boolean { when (item?.itemId) { android.R.id.home -> { // code here not gets called when click up/home button mPresenter.save() return true } R.id.edit-> { // The code here is revoked when item selected. } else -> { return super.onOptionsItemSelected(item) } } } 方法,并编写onOptionsItemSelected(...) case,仍然无法调用其中的方法。

为什么android.R.id.home案例中的代码未被调用?

1 个答案:

答案 0 :(得分:2)

阅读setHomeButtonEnabled

  

启用或禁用" home"操作栏一角的按钮。   (请注意,这是应用程序主页/上行动作   吧,而不是系统范围的主页按钮。)

 supportActionBar?.setHomeButtonEnabled(true)
 supportActionBar?.setDisplayHomeAsUpEnabled(true)

然后

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.getItemId()){
        android.R.id.home -> {
            mPresenter.save()
            return true
        }
         R.id.edit-> {
            // some code
        }
    }
    return super.onOptionsItemSelected(item)
}