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

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

例如,调用如下所示:

 setContentView(R.id.textView1); 

将正确地报告R.id.textView1不是一个布局ID(消息是“预期的types布局资源”)。 还有其他的情况下这个胡乱的周围。

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

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

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

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

  1. 这是如何实现的 – 特别检查“烤”到皮棉?
  2. 有没有办法注释mySetContentView()方法,以便它也会报告资源types错误时调用一个无效的值?

Solutions Collecting From Web of "Android Studio的“预期资源types”检查?"

(感谢@CommonsWare的抬头)。

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

  • IdRes
  • DrawableRes
  • LayoutRes
  • StringRes
  • &C

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

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

Android Studio将检查提供的资源ID是否确实用于布局。

而且,这些注释是导出的,所以它们在devise一个库时特别有用。

资料来源:

  • 来自Google I / O 2014的video: Android开发工具中的新function

这些都是注释:

 @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 

试试这个答案:它的工作…把这个代码放到你的build.gradle中

 android { lintOptions { disable "ResourceType" } } 

所有注释,你可以使用android.support.annotation你可以在这里find。

和关于支持注释的技术文档 。