Идентификаторы пунктов меню в проекте библиотеки Android? - PullRequest
31 голосов
/ 12 декабря 2011

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

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);
    }
}

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

1 Ответ

69 голосов
/ 12 декабря 2011

Замените 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, потому что последний модификатор был удален из идентификаторов в классе R.

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

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