java – NullPointerException onActivityCreated / onStart / onViewCreated方法上的getView()警告

我知道getView()可能会在onCreateView()方法中返回null,但即使我将以下代码放在onActivityCreated(),onStart()或onViewCreated()方法中)中,仍然会显示关于 Android Studio中可能的NullPointerException的警告我的程序运行没有任何问题).如何摆脱这个警告?

我使用片段.

码:

datpurchased = (EditText) getView().findViewById(R.id.datepurchased); 
//datpurchased defined as instance variable in the class

警告:

Method invocation ‘getView().findViewById(R.id.datepurchased)’ may
produce ‘java.lang.NullPointerException’

解决方法

Android Studio基于IntelliJ IDEA,这是IntelliJ的一个功能,当您在使用它之前不检查方法返回的对象是否为null时,会在编译时给出警告.

避免这种情况的一种方法是总是检查null或捕获NullPointerException的样式的程序,但是它可以变得非常冗长,特别是对于您知道的事情将始终返回一个对象,而不会为null.

一个替代方法是使用@SuppressWarnings等注解方法来抑制这种情况下的警告,方法使用您知道的对象永远不能为空:

@SuppressWarnings({"NullableProblems"})
public Object myMethod(Object isNeverNull){
    return isNeverNull.classMethod();
}

或者,在您的情况下,线路级别的抑制:

//noinspection NullableProblems
datpurchased = (EditText) getView().findViewById(R.id.datepurchased); //datpurchased defined as instance variable in the class

确保对象真的永远不能为null.

有关IntelliJ的@NotNull和@Nullable注释的更多信息可以在here中找到,更多关于检查和抑制它们的内容here.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...