2016-03-31 3 views
0

Это странный случай края, который я испытываю. Я назначаю идентификатор ресурса для переносимого переменной переменной через тернарный оператор, который использует методы (которые возвращают целые числа, представляющие идентификаторы ресурсов). Вот пример вопроса я впадающей:Идентификатор ресурса для Android, потерянный в тройном операторе со способами

private int test() { 
    return R.drawable.ic_one; 
} 

public void main() { 
    int myIcon = (true) ? test() : R.drawable.ic_two; 
    imageView.setImageResource(myIcon); 
} 

В приведенном выше примере, setImageResource не будет компилироваться, потому что он хочет идентификатор ресурса. Однако, если вы измените тройной оператор, чтобы ссылаться на идентификатор непосредственно, она работает:

int myIcon = (true) ? R.drawable.ic_one : R.drawable.ic_two; 

Это указывает на то, что возвращаемое значение (целое) из test() был виноват, но с использованием test() непосредственно работает:

int myIcon = test(); 

Учитывая, что как тройной оператор, так и метод возвращаются работать изолированно, а как насчет их объединения делает это неудачным?

ответ

1

Возможно, некоторые глупости в том, как инструменты сборки обрабатывают аннотации поддержки. Попробуйте добавить @DrawableRes в возвращаемое значение test(). Я думаю, что это было бы синтаксис, хотя я не на 100% уверен:

private @DrawableRes int test() { 
    return R.drawable.ic_one; 
} 
+0

На полпути! Это устраняет ошибки компиляции (и подчеркивание linter), однако последнее приложение по-прежнему не отображает значки. Необычность в средствах сборки будет звучать правильно для этого. – RedBassett

1

попробовать, как:

int myIcon = ((true) ? R.drawable.ic_one : R.drawable.ic_two); 

несколько раз, я не знаю, почему, компилятор получить первый аргумент тройной, как результат ...

+0

Пробовал, что не повезло. – RedBassett

+0

Человек, поэтому я думаю, что это ошибка. Не см. Других couses. – Jhonnyjks

+0

Я не могу использовать Android SDK сейчас, но я увижу это, когда смогу, если havent еще не решил. – Jhonnyjks

Смежные вопросы