Настройка itemId в меню настроек - PullRequest
12 голосов
/ 05 декабря 2011

У меня есть меню, определенное через ресурс XML.Теперь динамически добавляю пункт меню

public boolean onCreateOptionsMenu(Menu menu) 
{
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.mainmenu, menu);

    if(myCondition==true)
    {
        menu.add(0, 99, 0, "new Entry");

    }

    return true;
}

В onOptionsItemSelected (элемент MenuItem) у меня есть оператор case, который проверяет «99», и он выполняет мои действия.Технически это работает нормально, мне просто интересно, какое число, здесь 99, я выберу?Элементы, созданные в XML, получили идентификатор через файл ресурсов, я предполагаю, что в Android есть некоторая логика для создания этих элементов.Интересно, может ли случиться так, что сгенерированный пункт меню тоже случайно получит 99, и тогда он больше не будет работать.Какой будет лучший способ?

Ответы [ 2 ]

5 голосов
/ 05 декабря 2011

Я всегда использовал перегрузку только с параметром title, но, глядя на документы, кажется, что вы можете передать NONE.

http://developer.android.com/reference/android/view/Menu.html#add(int, int, int, int)

0 голосов
/ 15 января 2016

Глупым решением для меня было создание меню макета ресурса xml со всеми необходимыми мне кнопками с идентификаторами, тогда я могу ссылаться на них в коде, используя их собственный уникальный идентификатор, даже если я не использую этот ресурс ввсе - буквально просто регистр для случайно сгенерированного идентификатора ..

...