При вызове метода в моем родительском классе Fragment идентификатор из меню отличается, но заголовок совпадает. Я изменяю заголовок в xml из этого меню, чтобы подтвердить, и пункт меню оттуда. Я изменил идентификаторы меню, создал другой 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() {
...
}
В режиме отладки iпопробуйте сравнить идентификаторы из меню, и результат будет таким: item.itemid = 2131230966
из выбранной компании меню R.id.menu_company = -1000255
. я также пытался сделать недействительными кэши и перезапустить