Android Studio Beta (0.8) possède une nouvelle fonctionnalité intéressante qui permet de vérifier que certains paramètres int
ne sont pas des entiers arbitraires, mais possèdent plutôt certaines propriétés.
Par exemple, appeler quelque chose comme:
setContentView(R.id.textView1);
rapportera correctement que R.id.textView1
n'est pas un identifiant de présentation (le message est "ressource attendue de type présentation"). Il y a d'autres cas de ce poivré autour.
Naturellement, cette protection est perdue dès que vous ajoutez vos propres méthodes, par exemple.
private void mySetContentView(int resourceId) {
setContentView(resourceId);
}
Je peux alors appeler mySetContentView()
avec n'importe quel entier arbitraire et il ne se plaindra pas.
Donc, j'ai deux questions (liées):
mySetContentView()
pour qu'elle puisse également signaler une erreur de type de ressource lors de son appel avec une valeur non valide?(Merci à @CommonsWare pour le heads up).
Des annotations Java permettent de prendre en charge ces vérifications dans votre propre code. Ils peuvent tous être trouvés dans le package Android.support.annotations
:
IdRes
DrawableRes
LayoutRes
StringRes
Dans ce cas, par exemple, je pourrais utiliser:
private void mySetContentView(@LayoutRes int resourceId) {
setContentView(resourceId);
}
et Android Studio vérifiera que l'ID de ressource fourni est bien pour une mise en page.
De plus, ces annotations sont exportées, elles peuvent donc être particulièrement utiles lors de la conception d'une bibliothèque.
Sources:
Ce sont toutes les annotations:
@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
Essayez cette réponse: Cela fonctionne ... Mettez ce code dans votre build.gradle
Android {
lintOptions {
disable "ResourceType"
}
}
Toutes les annotations que vous pouvez utiliser avec Android.support.annotation
vous pouvez trouver ici .
Et documentation technique sur les annotations de support.