studio length getbytes create java android-studio nullpointerexception inspection

length - object java android



findViewById() puede producir NullPointerException (3)

Tengo muchas de estas llamadas:

(ListView) getView().findViewById(R.id.main_list_view); (TextView) getView().findViewById(R.id.items_no); ....

y AndroidStudio me dice que pueden autorizar una NullPointerException :

Invocación del método getView().findViewById(R.id.main_list_view) puede producir java.lang.NullPointerException menos ... (Ctrl + F1)

Esta inspección analiza el control del método y el flujo de datos para informar las posibles condiciones que siempre son verdaderas o falsas, las expresiones cuyo valor está comprobado estáticamente como constante y las situaciones que pueden conducir a violaciones del contrato de anulabilidad.

Las variables, los parámetros del método y los valores de retorno marcados como @Nullable o @NotNull se consideran @NotNull (o no nulo, respectivamente) y se utilizan durante el análisis para verificar los contratos de nulabilidad, por ejemplo, informar posibles errores de NullPointerException .

Los contratos más complejos se pueden definir usando la anotación @Contract , por ejemplo:

@Contract("_, null -> null") - el método devuelve null si su segundo argumento es nulo @Contract("_, null -> null; _, !null -> !null") - el método devuelve null si es el segundo argumento es nulo y no nulo de lo contrario

@Contract("true -> fail") - un método típico de assertFalse que arroja una excepción si se le pasa verdadero

La inspección se puede configurar para usar anotaciones @NotNull @Nullable personalizadas (por defecto se usarán las de anotaciones.jar)

Afortunadamente, todo funciona, pero ¿hay alguna mejora en este código que puedo hacer?


Debes ignorar el problema;

Como @DanDar3 escribió -> getView () puede devolver nulo y AndroidStudio lo resalta.

Pero si realmente quieres hacer que AndroidStudio sea feliz, seguro que puedes ...
Solo afirmar vista no es nulo:

View view = getView(); assert view != null; (ListView) view.findViewById(R.id.main_list_view); (TextView) view.findViewById(R.id.items_no);


Eso es porque getView() puede devolver nulo y se anota como @Nullable , verifica las fuentes y su JavaDoc - CTRL + Haga clic en la llamada a getView () en su código.

/** * Get the root view for the fragment''s layout (the one returned by {@link #onCreateView}), * if provided. * * @return The fragment''s root view, or null if it has no layout. */ @Nullable public View getView() { return mView; }

Puede envolver su código usted mismo y verificar que null tenga la advertencia desaparece, o colocar el cursor en cualquier lugar dentro de la llamada findViewById (), esperar unos segundos para que se muestre la bombilla (o presionar Alt + Enter) y luego elegir uno de las soluciones sugeridas.