Подтвердить что ты не робот

Предупреждение NullPointerException для getView() внутри метода onActivityCreated/onStart/onViewCreated

Я знаю, что getView() может возвращать null внутри метода onCreateView(), но даже если я поместил ниже код внутри методов onActivityCreated(), onStart() или onViewCreated(), он все еще показывает предупреждение о возможном NullPointerException в Android Studio (хотя моя программа работает без каких-либо проблем). Как избавиться от этого предупреждения?

Я использую фрагменты.

код:

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

Внимание:

Вызов метода getView(). findViewById (R.id.datepurchased) 'может произвести 'java.lang.NullPointerException'

4b9b3361

Ответ 1

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

Убедитесь, что объекты действительно никогда не могут быть пустыми.

Более подробную информацию о IntelliJ @NotNull и @Nullable аннотации можно найти здесь, и многое другое об инспекциях и подавлении их здесь.