这是我遇到的一个奇怪的边缘情况。我通过使用方法(返回表示资源 ID 的整数)的三元运算符将可绘制对象的资源 ID 分配给变量。以下是我遇到的问题的示例:
private int test() {
return R.drawable.ic_one;
}
public void main() {
int myIcon = (true) ? test() : R.drawable.ic_two;
imageView.setImageResource(myIcon);
}
在上面的示例中,setImageResource
将无法编译,因为它需要资源 ID。但是,如果您将三元运算符更改为直接引用 ID,则它可以工作:
int myIcon = (true) ? R.drawable.ic_one : R.drawable.ic_two;
这表明 test()
的返回值 (int) 是罪魁祸首,但直接使用 test()
也可以:
int myIcon = test();
鉴于三元运算符和方法都单独返回工作,将它们组合起来会导致失败吗?
最佳答案
构建工具处理支持注释的方式可能有些愚蠢。尝试将 @DrawableRes
添加到 test()
的返回值中。我认为这就是语法,尽管我不能 100% 确定:
private @DrawableRes int test() {
return R.drawable.ic_one;
}
关于java - Android 资源 ID 在三元运算符和方法中丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36339224/