uso studio que metodos annotation android android-studio lint typechecking

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):

  1. ¿Cómo se logra esto? ¿Se "hornean" los cheques especiales en pelusa?
  2. ¿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: