我使用的是一种直观但可能是非正统的捷径,我只是想知道它是否会造成问题,是不好的形式,还是有一种不同的,更容易被接受的方式。
快捷方式是:在一个函数中,如果一个函数需要一个整型的R.drawable常量,我有时会使用0来充当传递"null“的等价物。
下面是我如何使用它的一种模板:
`int someDrawable = isSomeCondition() ? R.drawable.somedrawable_identifier : 0; mHandler.post(new UpdateSomeUI(someDrawable));`
//and, elsewhere in the application,
private class UpdateSomeUI implements Runnable {
private final int someDrawable;
public UpdateSomeUI(int someDrawable) {
this.someDrawable = someDrawable;
}
public void run() {
mSomeImageView.setImageResource(someDrawable);
}
}
它似乎起作用了--也就是说,到目前为止,它一直在做我想要的事情,到目前为止,我还没有观察到任何负面影响,比如崩溃或在设备中产生量子奇点。
这样做安全吗?这是不是很糟糕的形式?I S‘’dTFW表示在这种情况下会被识别为"null“的某个官方整数值,但结果却是空的。有人知道这样的值是否存在吗?
编辑:我意识到标签"r“并不是我想要的那个。然而,标签"android.R“似乎并不存在。我想我现在要去掉这个标签。
发布于 2011-02-28 20:43:42
没有代表"null“的资源,通过传入无效的资源id,异常确实会被抛出并在内部处理(当调用getDrawable(0)
时)。正确的做法是只有在实际存在有效的可绘制时才调用UpdateSomeUI(someDrawable)
。
就像这样
//in a method somewhere:
if(isSomeCondition()) {
mHandler.post(new UpdateSomeUI(R.drawable.somedrawable_identifier));
}
这样做有什么错呢?
发布于 2019-09-29 05:46:41
在android文档中找到了资源ID的子节常量,希望它能有所帮助。
在API level 29 static val ID_NULL中添加的常量ID_NULL: Int空资源ID。这表示当找不到资源或在XML中值设置为@null时,系统返回的无效资源ID。
值:0
https://stackoverflow.com/questions/5147241
复制