onOptionsItemSelected 上的 ID 不匹配
ids on onOptionsItemSelected doesn't match
在我的 parent 片段 class 上调用方法时,菜单中的 ID 不同,但标题相同。我从它的菜单中更改 xml 中的标题以确认,项目菜单来自那里。我更改了菜单 ID,创建了另一个 menu.xml,并且仍在继续。
我的 class:
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,return 是这样的:
item.itemid = 2131230966
来自所选菜单公司R.id.menu_company = -1000255
。
我还尝试使缓存无效并重新启动
我找到问题了。首先,我尝试清理项目并重建,然后更改菜单顺序。没有成功。我已经清理并再次重建,现在无需更改代码即可工作。我正在使用 MacOs,但不知道它是否有问题。这不是我第一次在 MacO 上做同样的事情。 windows 上的同一项目始终有效。反正。谢谢谁看到了。
在我的 parent 片段 class 上调用方法时,菜单中的 ID 不同,但标题相同。我从它的菜单中更改 xml 中的标题以确认,项目菜单来自那里。我更改了菜单 ID,创建了另一个 menu.xml,并且仍在继续。 我的 class:
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,return 是这样的:
item.itemid = 2131230966
来自所选菜单公司R.id.menu_company = -1000255
。
我还尝试使缓存无效并重新启动
我找到问题了。首先,我尝试清理项目并重建,然后更改菜单顺序。没有成功。我已经清理并再次重建,现在无需更改代码即可工作。我正在使用 MacOs,但不知道它是否有问题。这不是我第一次在 MacO 上做同样的事情。 windows 上的同一项目始终有效。反正。谢谢谁看到了。