избежать неконстантного выражения в Android - PullRequest
1 голос
/ 20 декабря 2011

После ADT 14 появилась новая вещь, которая называется непостоянным выражением: необходима миграция.По какой причине я не могу делать такие вещи, как это:

TextView tv = (TextView) findViewById(R.id.text);

Или это:

getRessources().getDrawable(R.drawable.icon);

Что мне нужно сделать, чтобы это работало сейчас?

Ответы [ 2 ]

3 голосов
/ 20 декабря 2011

Вы должны выполнить рефакторинг своего кода, поскольку в проектах библиотеки поля R больше не являются константами (не final). См. http://tools.android.com/tips/non-constant-fields для получения подробной информации и примеров того, как решить проблему.

По сути, вам нужно изменить свои switch операторы на if-else, поскольку вы не можете переключаться на непостоянные значения.

Кроме того, это только для библиотечных проектов. обычные проекты Android не требуют этого изменения.

После внесения изменений обязательно очистите и обновите проект, так как некоторые ошибки / предупреждения могут остаться.

1 голос
/ 02 ноября 2015

В Затмении, Нажмите на проект -> Свойства -> Android

и снимите флажок, если выбрано значение «Есть библиотека».

...