Android Studio Beta(0.8)には、いくつかのint
パラメーターが任意の整数ではなく、いくつかのプロパティを持っていることをチェックする気の利いた新機能があります。
たとえば、次のような呼び出し:
_setContentView(R.id.textView1);
_
_R.id.textView1
_がレイアウトIDではないことを正しく報告します(メッセージは「レイアウトタイプのリソースが期待されます」)。この他のケースが散りばめられています。
当然、この保護は、独自のメソッドをミックスに追加するとすぐに失われます。
_private void mySetContentView(int resourceId) {
setContentView(resourceId);
}
_
その後、任意の整数でmySetContentView()
を呼び出すことができ、文句は言いません。
したがって、2つの(関連する)質問があります。
mySetContentView()
メソッドに注釈を付けて、無効な値で呼び出したときにリソースタイプエラーも報告する方法はありますか?(ヘッドアップしてくれた@CommonsWareに感謝)。
独自のコードでこれらのチェックをサポートするためのJava注釈があります。これらはすべてAndroid.support.annotations
パッケージ:
IdRes
DrawableRes
LayoutRes
StringRes
この場合、たとえば、次を使用できます。
private void mySetContentView(@LayoutRes int resourceId) {
setContentView(resourceId);
}
およびAndroid Studioは、指定されたリソースIDがレイアウト用であることを確認します。
さらに、これらの注釈はエクスポートされるため、ライブラリを設計するときに特に役立ちます。
ソース:
これはすべて注釈です:
@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
で使用できるすべての注釈 here を見つけることができます。
テクニカルドキュメント アノテーションのサポートについて。