java - Android 资源 ID 在三元运算符和方法中丢失

标签 java android resources

这是我遇到的一个奇怪的边缘情况。我通过使用方法(返回表示资源 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/

相关文章:

Java:矩形二维和负尺寸

java - 找不到如何对这个数字模式进行编程

android - 如何在Android Studio源代码中运行adb命令?

java - 通过字符串调用 Drawable-Resource

c# - 全局常量的正确使用方法

java - WorkStealingPool 和 ThreadPoolExecutor 在与 CompletableFuture 一起使用时会产生不同的结果

java - 如何设置图片表情始终存储正确的图片路径

安卓 Espresso : Running multiple tests sequentially

android - 如何在android中使用上下文菜单删除联系人

java - 加载资源时"URI is not hierarchical"