идентификаторы onOptionsItemSelected не совпадают - PullRequest
0 голосов
/ 20 ноября 2019

При вызове метода в моем родительском классе 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. я также пытался сделать недействительными кэши и перезапустить

1 Ответ

0 голосов
/ 20 ноября 2019

Я нашел проблему. Сначала я попытался очистить проект и перестроить, после этого изменил порядок меню. Безуспешно. И я снова очистил и перестроил, и теперь работает без изменения кода. Я использую MacOs, но не знаю, есть ли у них проблемы. Это не первый раз на MacOs, когда я делаю то же самое. Один и тот же проект на windows всегда работает. Тем не мение. Спасибо, кто видел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...