Это странный случай края, который я испытываю. Я назначаю идентификатор ресурса для переносимого переменной переменной через тернарный оператор, который использует методы (которые возвращают целые числа, представляющие идентификаторы ресурсов). Вот пример вопроса я впадающей:Идентификатор ресурса для 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();
Учитывая, что как тройной оператор, так и метод возвращаются работать изолированно, а как насчет их объединения делает это неудачным?
На полпути! Это устраняет ошибки компиляции (и подчеркивание linter), однако последнее приложение по-прежнему не отображает значки. Необычность в средствах сборки будет звучать правильно для этого. – RedBassett