findViewById()可能会产生NullPointerException

Pha*_*e01 7 java nullpointerexception inspection android-studio

我有很多这样的电话:

(ListView) getView().findViewById(R.id.main_list_view);
(TextView) getView().findViewById(R.id.items_no);
....
Run Code Online (Sandbox Code Playgroud)

和AndroidStudio告诉我他们可能会采取以下措施NullPointerException:

方法调用getView().findViewById(R.id.main_list_view)可能会产生java.lang.NullPointerException较少的...(Ctrl + F1)

此检查分析方法控制和数据流,以报告始终为真或假的可能条件,静态证明其值为常量的表达式,以及可能导致违约性合同违规的情况.

变量,方法参数和返回值标记为@Nullable或被@NotNull视为可为空(或不为空),并在分析期间用于检查可空性合同,例如报告可能的NullPointerException 错误.

可以使用@Contract 注释定义更复杂的合同,例如:

@Contract("_, null -> null")- 如果第二个参数为null @Contract("_, null -> null; _, !null -> !null"),则方法返回null - 如果第二个参数为null ,则方法返回null,否则返回null

@Contract("true -> fail")- 一种典型的assertFalse方法,如果传递给它,则抛出异常

可以将检查配置为使用自定义@Nullable @NotNull注释(默认情况下将使用annotations.jar中的注释)

幸运的是,有作品,但是我可以对这段代码进行改进吗?

Gay*_*tti 5

这是 android.support.v7.app.AppCompatActivity 中的一个已知问题,它已在 v24 中修复。

https://code.google.com/p/android/issues/detail?id=203345

android.support.v4.app.FragmentActivity 或 android.app.Activity 不会有任何问题