web-dev-qa-db-ja.com

Android Studioの「タイプの予期されるリソース」チェック?

Android Studio Beta(0.8)には、いくつかのintパラメーターが任意の整数ではなく、いくつかのプロパティを持っていることをチェックする気の利いた新機能があります。

たとえば、次のような呼び出し:

_setContentView(R.id.textView1);
_

_R.id.textView1_がレイアウトIDではないことを正しく報告します(メッセージは「レイアウトタイプのリソースが期待されます」)。この他のケースが散りばめられています。

当然、この保護は、独自のメソッドをミックスに追加するとすぐに失われます。

_private void mySetContentView(int resourceId) {
    setContentView(resourceId);
}
_

その後、任意の整数でmySetContentView()を呼び出すことができ、文句は言いません。

したがって、2つの(関連する)質問があります。

  1. これはどのように達成されますか?特別なチェックは糸くずに「焼き込まれます」か?
  2. mySetContentView()メソッドに注釈を付けて、無効な値で呼び出したときにリソースタイプエラーも報告する方法はありますか?
28
matiash

(ヘッドアップしてくれた@CommonsWareに感謝)。

独自のコードでこれらのチェックをサポートするためのJava注釈があります。これらはすべてAndroid.support.annotations パッケージ:

  • IdRes
  • DrawableRes
  • LayoutRes
  • StringRes
  • &c

この場合、たとえば、次を使用できます。

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

およびAndroid Studioは、指定されたリソースIDがレイアウト用であることを確認します。

さらに、これらの注釈はエクスポートされるため、ライブラリを設計するときに特に役立ちます。

ソース:

34
matiash

これはすべて注釈です:

@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
20
Kitesurfer

この答えを試してください:その動作...このコードをbuild.gradleに入れてください

Android {
 lintOptions {
    disable "ResourceType"
  }
}
8
Mahendran Candy

Android.support.annotationで使用できるすべての注釈 here を見つけることができます。

テクニカルドキュメント アノテーションのサポートについて。

0