Android 安卓工作室';s";“类型”的预期资源;检查?
Android Studio Beta(0.8)有一个漂亮的新功能,它检查一些Android 安卓工作室';s";“类型”的预期资源;检查?,android,android-studio,lint,typechecking,Android,Android Studio,Lint,Typechecking,Android Studio Beta(0.8)有一个漂亮的新功能,它检查一些int参数不是任意整数,而是具有一些属性 例如,调用如下内容: setContentView(R.id.textView1); 将正确报告R.id.textView1不是版面id(消息为“预期版面类型资源”)。还有其他类似的案例 可以理解的是,一旦您将自己的方法添加到混合中,这种保护就会丢失,例如 private void mySetContentView(int resourceId) { setConte
int
参数不是任意整数,而是具有一些属性
例如,调用如下内容:
setContentView(R.id.textView1);
将正确报告R.id.textView1
不是版面id(消息为“预期版面类型资源”)。还有其他类似的案例
可以理解的是,一旦您将自己的方法添加到混合中,这种保护就会丢失,例如
private void mySetContentView(int resourceId) {
setContentView(resourceId);
}
然后我可以用任意整数调用mySetContentView()
,它不会抱怨
因此,我有两个(相关)问题:
mySetContentView()
方法进行注释,以便它在使用无效值调用时也会报告资源类型错误IdRes
DrawableRes
LayoutRes
StringRes
- &c
private void mySetContentView(@LayoutRes int resourceId) {
setContentView(resourceId);
}
androidstudio将检查提供的资源id是否确实用于布局
此外,这些注释是导出的,因此它们在设计库时特别有用
资料来源:
- 谷歌I/O 2014视频:
- 这些都是注释:
@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
所有注释,可与android.support.annotation一起使用,您可以找到
还有关于支持注释。试试这个答案:它能工作。。。将此代码放入build.gradle
android {
lintOptions {
disable "ResourceType"
}
}
我很确定这是一个注释——我想他们可能已经在谷歌I | O@commonware上的开发者工具演示中介绍了这一点!你想回答这个问题,还是我自己回答?因为我不记得注释了,你最好回答它。:-)@通用软件完成了,谢谢!谢谢同样的解释。。。InputStream is=getResources().openRawResource(getResourceID(R.drawable.greenbal))。。。。private int getResourceID(@DrawableRes int resID){return resID;}我认为问题恰恰相反:即使使用了中间函数,他也希望进行这些检查。注意:禁用支票通常是个坏主意。Android开发者通常比我们聪明;)