que - ¿Verifica el "recurso de tipo esperado" de Android Studio?
que es android studio (4)
Android Studio Beta (0.8) tiene una nueva característica ingeniosa donde comprueba que algunos parámetros int
no son enteros arbitrarios, sino que tienen algunas propiedades.
Por ejemplo, llamando a algo como:
setContentView(R.id.textView1);
informará correctamente que R.id.textView1
no es un ID de diseño (el mensaje es "recurso esperado del tipo de diseño"). Hay otros casos de esto salpicados.
Comprensiblemente, esta protección se pierde tan pronto como agrega sus propios métodos a la mezcla, por ejemplo,
private void mySetContentView(int resourceId) {
setContentView(resourceId);
}
Luego puedo llamar a mySetContentView()
con cualquier entero arbitrario y no se quejará.
Entonces, tengo dos preguntas (relacionadas):
- ¿Cómo se logra esto? ¿Se "hornean" los cheques especiales en pelusa?
- ¿Hay alguna forma de anotar el método
mySetContentView()
para que también informe un error de tipo de recurso cuando lo llame con un valor no válido?
Estas son todas las anotaciones:
@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
Pruebe esta respuesta: está funcionando ... Ponga este código en su build.gradle
android {
lintOptions {
disable "ResourceType"
}
}
Todas las anotaciones que puede utilizar con android.support.annotation
puede encontrar here .
Y el documento técnico sobre el apoyo a las anotaciones.
(Gracias a @CommonsWare por los avisos).
Hay anotaciones de Java para admitir estas comprobaciones en su propio código. Todos se pueden encontrar en el paquete android.support.annotations
:
-
IdRes
-
DrawableRes
-
LayoutRes
-
StringRes
- &do
En este caso, por ejemplo, podría usar:
private void mySetContentView(@LayoutRes int resourceId) {
setContentView(resourceId);
}
y Android Studio verificará que el ID de recurso proporcionado sea de hecho para un diseño.
Además, estas anotaciones se exportan, por lo que pueden ser especialmente útiles al diseñar una biblioteca.
Fuentes:
- Video de Google I / O 2014: Novedades en las herramientas de desarrollo de Android