这是我遇到的一个奇怪的边缘情况。我通过使用方法(返回表示资源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();
鉴于三元运算符和方法都是孤立地返回工作,那么组合它们会使它失败吗?
答案 0 :(得分:1)
构建工具如何处理支持注释可能有些愚蠢。尝试将@DrawableRes
添加到test()
的返回值。我认为这将是语法,虽然我不是100%肯定:
private @DrawableRes int test() {
return R.drawable.ic_one;
}
答案 1 :(得分:1)
尝试一下:
<? echo htmlspecialchars($_POST["Package"]); ?>
有些时候,我不知道为什么,编译器得到三元的第一个参数就像结果......