当在我的父Fragment类上调用该方法时,菜单中的id不同,但标题相同。我从它的菜单中更改xml中的标题以确认,项目菜单也从那里开始。我更改了菜单ID,创建了另一个menu.xml,但仍继续。 我的课:
abstract class BaseFragment : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
inflater.inflate(R.menu.header_menu, menu)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when(item.itemId) {
R.id.menu_company -> {
Log.i("Company", "SELECTED")
}
R.id.menu_user -> {
Log.i("USER", "SELECTED")
}
}
return super.onOptionsItemSelected(item)
}
}
我的菜单XML(header_menu.xml)
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_user"
android:icon="@drawable/ic_action_troca_usuario"
android:title="User"
app:showAsAction="always" />
<item
android:id="@+id/menu_company"
android:title="Company"
android:icon="@drawable/ic_action_seleciona_empresa"
app:showAsAction="always"/>
</menu>
从BaseFragment扩展的片段之一:
class ControleDeVendaFragment : BaseFragment() {
...
}
在调试模式下,我尝试比较菜单中的ID,返回的结果是:
item.itemid = 2131230966
来自选定的菜单公司R.id.menu_company = -1000255
。
我还尝试过使缓存无效并重新启动
答案 0 :(得分:0)
我发现了问题。首先,我要清理项目并重建,然后更改菜单顺序。没有成功。而且我已经清理并再次重建,现在无需更改代码即可工作。我正在使用MacO,但不知道它是否有问题。我并不是第一次在MacO上做同样的事情。 Windows上的同一项目始终有效。无论如何。感谢您的见识。