2015-05-08 12 views
10

Tôi biết getView() có thể trả về null bên onCreateView() phương pháp, nhưng ngay cả khi tôi đặt vào mã bên dưới bên onActivityCreated(), onStart() hoặc onViewCreated() phương pháp, nó vẫn thể hiện những cảnh báo về một khả năng NullPointerException trong Android Studio (mặc dù chương trình của tôi chạy mà không có bất kỳ vấn đề nào). Làm thế nào để thoát khỏi cảnh báo này?NullPointerException Cảnh báo trên getView() bên onActivityCreated/onStart/onViewCreated phương pháp

Tôi đang sử dụng Phân đoạn.

Code:

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

Cảnh báo:

Phương pháp gọi 'getView() findViewById (R.id.datepurchased)' có thể sản 'java.lang.NullPointerException'

Trả lời

13

Android Studio dựa trên IntelliJ IDEA và đây là tính năng của IntelliJ mang lại cho bạn cảnh báo vào thời gian biên dịch khi bạn không kiểm tra xem có phải là ob hay không ject được trả về bởi một phương thức là null trước khi sử dụng nó.

Một cách để tránh điều này là chương trình theo phong cách mà luôn kiểm tra cho null hoặc bắt NullPointerException, nhưng nó có thể nhận được rất dài dòng, đặc biệt là cho những thứ bạn biết sẽ luôn trả về một đối tượng và không bao giờ null.

lựa chọn khác là để ngăn chặn những lời cảnh báo về những trường hợp này sử dụng các chú thích như @SuppressWarnings cho các phương pháp sử dụng đối tượng mà bạn biết không bao giờ có thể được null:

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

hoặc, trong trường hợp của bạn, một ức chế dòng cấp:

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

Hãy chắc chắn rằng các đối tượng thực sự không bao giờ có thể rỗng.

Thông tin thêm về các chú thích @NotNull và @Nullable của IntelliJ có thể được tìm thấy here và thông tin thêm về kiểm tra và ngăn chặn chúng here.

+11

Tôi đã có thể ngăn chặn cảnh báo của mình với 'Constantinonditions không định nghĩa'. Nhưng liên kết về việc kiểm tra đàn áp rất hữu ích! – iamreptar

Các vấn đề liên quan