2015-03-23 30 views
6

tôi đang tạo ra DialogFragment và khi tôi muốn ghi đè onCreateDialog tôi nhận được cảnh báo sau đây:phương pháp onCreateDialog không chú thích ghi đè phương pháp chú thích với @NonNull

not annotated method overrides method annotated with @NonNull

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    return super.onCreateDialog(savedInstanceState); 
} 

Nếu tôi muốn đặt chú thích rằng phương pháp của tôi , Android Studio không thể tìm thấy chú thích đó.

Tại sao điều này lại xảy ra? Cảm ơn bạn đã giúp đỡ.

+0

bản sao có thể có của [Ý nghĩa của lỗi Android Studio: Không ghi đè tham số không được chú thích @NotNull parameter] (http://stackoverflow.com/questions/24728627/meaning-of-android-studio-error-not-annotated-parameter-overrides -notnull-para) – JHH

Trả lời

3

Vì bạn ghi đè phương thức được xác định bằng chú thích @NonNull (nghĩa là phương thức không được trả về null) và bạn không sử dụng cùng chú thích trong quá trình triển khai đã ghi đè của mình.

Vui lòng tìm kiếm câu hỏi của bạn trước khi gửi, điều này được hỏi nhiều lần.

Meaning of Android Studio error: Not annotated parameter overrides @NonNull parameter

(Edit: Cố định nghĩa của @NonNull chú thích, nhờ ci_)

+0

Cảm ơn bạn. Tôi đã cố gắng nhập 'android.support.annotation.NoNNull' nhưng Android Studio không thể tìm thấy chú thích. Giải pháp đó không hiệu quả với tôi. – user3339562

+2

@ JHH bạn đã không đọc câu hỏi đúng, nguyên tắc là như nhau, nhưng các chi tiết khác nhau. Trong trường hợp này, phương thức được chú thích bằng @NonNull, có nghĩa là bạn không thể trả về 'null' từ nó. Tham số 'savedInstanceState' có thể rất rỗng. Trường hợp này thậm chí còn được đề cập cụ thể trong tài liệu. –

+0

Cảm ơn @ci_. Rõ ràng tôi đã quá nhanh. – JHH

13

Nhìn vào định nghĩa của onCreateDialog phương pháp trong DialogFragment, bạn sẽ thấy:

@NonNull 
public Dialog onCreateDialog(Bundle savedInstanceState) 

Vì vậy, mã của bạn nên bao gồm cùng một chú thích @NonNull như sau:

@Override 
@NonNull 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    return super.onCreateDialog(savedInstanceState); 
} 
Các vấn đề liên quan