Android-使用int值0作为“0”;空"-R.可拉深的等效物

Android-使用int值0作为“0”;空"-R.可拉深的等效物,android,Android,我使用的是一种直观但可能非正统的快捷方式,我只是想知道它是否会导致问题,是一种不好的形式,或者是否有一种不同的、更为人们接受的方式 快捷方式是:在一个需要int(一个R.drawable常量)的函数中,我有时使用0作为传递“null”的等价物 以下是我如何使用它的一种模板: int someDrawable=isSomeCondition()?R.drawable.somedrawable\u标识符:0; mHandler.post(新的UpdateSomeUI(someDrawable))

我使用的是一种直观但可能非正统的快捷方式,我只是想知道它是否会导致问题,是一种不好的形式,或者是否有一种不同的、更为人们接受的方式

快捷方式是:在一个需要int(一个R.drawable常量)的函数中,我有时使用0作为传递“null”的等价物

以下是我如何使用它的一种模板:

int someDrawable=isSomeCondition()?R.drawable.somedrawable\u标识符:0;
mHandler.post(新的UpdateSomeUI(someDrawable))

它似乎起作用了——也就是说,到目前为止,它一直在做我想做的事情,到目前为止,我还没有观察到像崩溃或设备内量子奇点的产生这样的负面影响

这样做安全吗? 这是坏形式吗? I S'dTFW表示在这种情况下会被识别为“null”的某个官方整数值,但结果为空。有人知道这样一个值是否存在吗

编辑:
我意识到标签“r”不是指我想要的那个。然而,标签“android.R”似乎并不存在。我想我现在要删除标记。

没有表示“null”的资源,通过传入无效的资源id,会在内部引发和处理异常(当调用
getDrawable(0)
时)。正确的做法是只在实际存在有效的可绘制文件时调用
UpdateSomeUI(someDrawable)

差不多

//in a method somewhere: 
if(isSomeCondition()) {
    mHandler.post(new UpdateSomeUI(R.drawable.somedrawable_identifier));
}

这样做有什么不对?

在android资源ID文档的子节常量中找到了这一点,希望能有所帮助

常数 ID\u空 在API级别29中添加 静态值ID_NULL:Int null资源ID。这表示在找不到资源或XML中的值设置为@null时系统返回的无效资源ID


值:0

区别在于,我希望在isSomeCondition()停止为真时图像实际消失。如果我使用位图,我将调用setImageBitmap(null),以使图像从视图中消失;我尝试对setImageResource(0)执行等效操作。我认为正确的做法是传递View.VISIBLE或View.GONE并调用setVisibility。那么为什么不隐藏ImageView呢?接受了答案后,我现在似乎无法回答自己的问题。因此,我将此作为评论。查看ImageView源代码,似乎设置位图或其他可绘制文件会将mResource值设置为零。此外,无论何时显著使用mResource值,都会使用!=0支票。这非常有力地支持0是一个特殊值;任何实际资源都不会将“0”作为其赋值。这使我谨慎地相信使用0作为null是安全的。尽管形式仍然不好,但请参见下面的已接受答案。即使在问题有标记答案之后,您仍然回答了这个问题,这很好。说得好!我希望那不是讽刺哈哈。。我想我会像其他人那样连接这个链接。
//in a method somewhere: 
if(isSomeCondition()) {
    mHandler.post(new UpdateSomeUI(R.drawable.somedrawable_identifier));
}