Android Studio Beta(0.8)有一个漂亮的新功能,它检查某些int
参数不是任意整数,而是具有一些属性。
例如,调用类似:
的内容setContentView(R.id.textView1);
将正确报告R.id.textView1
不是布局ID(消息为"类型布局的预期资源")。还有其他一些案例。
可以理解的是,只要您将自己的方法添加到混合中,这种保护就会丢失,例如
private void mySetContentView(int resourceId) {
setContentView(resourceId);
}
然后我可以用任意整数调用mySetContentView()
,它不会抱怨。
所以,我有两个(相关的)问题:
mySetContentView()
方法,以便在使用无效值调用时报告资源类型错误?答案 0 :(得分:34)
(感谢@CommonsWare的提醒)。
有一些Java注释可以在您自己的代码中支持这些检查。它们都可以在android.support.annotations
包中找到:
IdRes
DrawableRes
LayoutRes
StringRes
在这种情况下,例如,我可以使用:
private void mySetContentView(@LayoutRes int resourceId) {
setContentView(resourceId);
}
并且Android Studio将检查提供的资源ID是否确实用于布局。
此外,这些注释被导出,因此在设计库时它们特别有用。
来源:
答案 1 :(得分:20)
这些都是注释:
@AnimatorRes
@AnimRes
@AnyRes
@ArrayRes
@AttrRes
@BoolRes
@ColorRes
@DimenRes
@DrawableRes
@FractionRes
@IdRes
@IntDef
@IntegerRes
@InterpolatorRes
@LayoutRes
@MenuRes
@NonNull
@Nullable
@PluralsRes
@RawRes
@StringDef
@StringRes
@StyleableRes
@StyleRes
@XmlRes
答案 2 :(得分:8)
尝试这个答案:它的工作......将此代码放入build.gradle
android {
lintOptions {
disable "ResourceType"
}
}
答案 3 :(得分:0)
您可以使用android.support.annotation
使用的所有注释here。
technical doc关于支持注释。