Подтвердить что ты не робот

Идентификаторы элементов меню в проекте библиотеки Android?

Приложение Android использует проект библиотеки, чтобы содержать большую часть кода приложения, так как есть две версии приложения, созданные из основного источника. Начиная с обновления IntelliJ IDEA (до версии 11), я получаю это предупреждение по каждому из приведенных ниже случаев:

Resource IDs cannot be used in a switch statement in Android library modules

Здесь код:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_item_one:   // Build error here
            // Do stuff
            return true;
        case R.id.menu_item_two:   // Build error here
            // Do stuff
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

ОК, поэтому, если я не могу ссылаться на них через их идентификатор, как я их ссылаюсь?

4b9b3361

Ответ 1

Подставьте switch конструкцией if/else if.

int id = item.getItemId();
if(id == R.id.menu_item_one) {
    // ...
}
else if(id == R.id.menu_item_two) {
    // ...
}

Это необходимо с ADT 14, потому что последний модификатор был удален из id в классе R.

См. Непостоянные поля в ярлыках случаев