2015-03-23 21 views
6

Sto creando DialogFragment e quando voglio ignorare onCreateDialog ricevo il seguente avviso:metodo onCreateDialog non annotato sostituisce metodo annotato con @NonNull

not annotated method overrides method annotated with @NonNull

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

Se voglio mettere che l'annotazione al mio metodo , Android Studio non riesce a trovare quell'annotazione.

Perché sta succedendo? Grazie per l'aiuto.

+0

possibile duplicato di [Significato di errore Android Studio: parametro non annotato sovrascrive parametro @NotNull] (http://stackoverflow.com/questions/24728627/meaning-of-android-studio-error-not-annotated-parameter-overrides -notnull-para) – JHH

risposta

3

Poiché si esegue l'override di un metodo definito con un'annotazione @NonNull (ovvero il metodo non deve restituire null) e non si sta utilizzando la stessa annotazione nell'implementazione sovrascritta, in modo da renderla non corrispondente.

Si prega di cercare la vostra domanda prima di inviare, questo viene chiesto più volte.

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

(Edit: significato fisso di @NonNull annotazione, grazie CI_)

+0

Grazie. Ho provato a importare 'android.support.annotation.NoNNull' ma Android Studio non trova annotazioni. Quella soluzione non funziona per me. – user3339562

+2

@JHH non hai letto correttamente la domanda, il principio è lo stesso, ma i dettagli sono diversi. In questo caso il metodo è annotato con @NonNull, il che significa che non puoi restituire "null" da esso. Il parametro 'savedInstanceState' può essere nullo. Questo caso è anche specificamente menzionato nei documenti. –

+0

Grazie a @ci_. Apparentemente ero troppo veloce. – JHH

13

Guardando definizione del metodo onCreateDialog in DialogFragment, si vedrà:

@NonNull 
public Dialog onCreateDialog(Bundle savedInstanceState) 

Quindi il codice dovrebbe includere la stessa annotazione @NonNull come questa:

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