使用方法在三元运算符中丢失Android资源ID

时间:2016-03-31 16:46:11

标签: java android resources

这是我遇到的一个奇怪的边缘情况。我通过使用方法(返回表示资源ID的整数)的三元运算符将drawable的资源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();

鉴于三元运算符和方法都是孤立地返回工作,那么组合它们会使它失败吗?

2 个答案:

答案 0 :(得分:1)

构建工具如何处理支持注释可能有些愚蠢。尝试将@DrawableRes添加到test()的返回值。我认为这将是语法,虽然我不是100%肯定:

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

答案 1 :(得分:1)

尝试一下:

<? echo htmlspecialchars($_POST["Package"]); ?>

有些时候,我不知道为什么,编译器得到三元的第一个参数就像结果......