在活动类中,我将动作栏设置为:
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
案例中的代码未被调用?
答案 0 :(得分:2)
启用或禁用" 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)
}