Android Studio的“预期资源类型”检查?

时间:2014-07-12 19:09:49

标签: android android-studio lint typechecking

Android Studio Beta(0.8)有一个漂亮的新功能,它检查某些int参数不是任意整数,而是具有一些属性。

例如,调用类似:

的内容
setContentView(R.id.textView1);

将正确报告R.id.textView1不是布局ID(消息为"类型布局的预期资源")。还有其他一些案例。

可以理解的是,只要您将自己的方法添加到混合中,这种保护就会丢失,例如

private void mySetContentView(int resourceId) {
    setContentView(resourceId);
}

然后我可以用任意整数调用mySetContentView(),它不会抱怨。

所以,我有两个(相关的)问题:

  1. 如何实现 - 是特殊检查"烘焙"进入lint?
  2. 有没有办法注释mySetContentView()方法,以便在使用无效值调用时报告资源类型错误?

4 个答案:

答案 0 :(得分:34)

(感谢@CommonsWare的提醒)。

有一些Java注释可以在您自己的代码中支持这些检查。它们都可以在android.support.annotations包中找到:

  • IdRes
  • DrawableRes
  • LayoutRes
  • StringRes
  • 和C

在这种情况下,例如,我可以使用:

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关于支持注释。

相关问题