繁体   English   中英

Android:以编程方式setId提供警告类型为id的预期资源

[英]Android: programmatically setId is gives a warning Expected resource of type id

我不知道为什么会这样:

如果我写下面的代码:

TextView textView = new TextView(this);
textView.setId(1);

1作为id不工作,给我一个警告,如:

在此输入图像描述

它不符合以下价值观:

textView.setId(0+1);   // Valid
textView.setId(var++); // Valid even var=0

但无效

textView.setId(1);     // Invalide

有人知道吗? 任何人都可以解释这件事吗

此警告由android lint生成。 它会检查您是否使用正确类型的ID作为标识符。 此功能的签名是:

public void setId(@IdRes int id)

因此,lint检查你正在使用@IdRes类型的id(参见IdRes注释 ),而不是@ColorRes@StringRes (它检查你使用的是类R.id

通过使用像0+1var++ (BTW,它的结果实际上是0而不是1)这样的表达式,你会妨碍lint来推断参数类型。

你得到一个警告,因为设置你自己的ID可能很危险,你可以设置与现有的xml元素相同的ID,这显然会发生碰撞并导致问题。 请改用View.generateViewId()来防止这种情况发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM