2015-05-08 9 views
10

wiem getView() może zwróci null wewnątrz onCreateView() metody, ale nawet gdybym umieścić poniższy kod wewnątrz onActivityCreated(), onStart() lub onViewCreated() metod, to nadal pokazuje ostrzeżenie o możliwym NullPointerException w Android Studio (chociaż mój program działa bez żadnego problemu). Jak pozbyć się tego ostrzeżenia?NullPointerException Ostrzeżenie na getView() wewnątrz onActivityCreated/onStart/onViewCreated metoda

Używam Fragmentów.

Kod:

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

Uwaga:

Sposób wywołania 'getView() findViewById (R.id.datepurchased)' może produkować 'java.lang.NullPointerException'

Odpowiedz

13

Android Studio bazuje na IntelliJ IDEA i jest to funkcja IntelliJ, która wyświetla ostrzeżenia w czasie kompilacji, gdy nie sprawdza się, czy ject zwrócony metodą jest przed użyciem.

Jednym ze sposobów na uniknięcie tego jest programem w stylu, który zawsze sprawdza dostępność null lub łapie NullPointerException, ale może się bardzo gadatliwy, szczególnie dla rzeczy wiesz zawsze zwraca obiekt i nigdy null.

Inną alternatywą jest stłumić ostrzeżenia dotyczące takich przypadków za pomocą adnotacji, takich jak @SuppressWarnings metod wykorzystujących obiekty wiesz, nigdy nie może być null:

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

lub, w przypadku, tłumienie line-level:

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

Upewnij się jednak, że obiekty naprawdę nigdy nie mogą mieć wartości NULL.

Więcej informacji na temat adnotacji IntelliJ's @NotNull i @Nullable można znaleźć pod numerem here, a także więcej na temat inspekcji i tłumienia ich here.

+11

Udało mi się zignorować moje ostrzeżenie za pomocą "Noinspection ConstantConditions". Ale link o tłumieniu inspekcji był bardzo przydatny! – iamreptar

Powiązane problemy