onCreateDialog方法没有进行注释,覆盖了一个被@NonNull注释的方法。

9

我正在创建DialogFragment,当我想要重写onCreateDialog时,我收到以下警告:

未注释的方法覆盖了使用@NonNull注释的方法

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

如果我想在我的方法中放置该注释,Android Studio找不到该注释。
为什么会这样?谢谢您的帮助。

2个回答

17

查看 DialogFragment 中的 onCreateDialog 方法定义,您将看到:

@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState)

所以您的代码应该包含与此相同的@NonNull注释:

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

6
因为您重写了一个被@NonNull注释定义的方法(意味着该方法不能返回null),而您在重写的实现中没有使用相同的注释,因此造成了不匹配。
请在提交问题之前搜索您的问题,这已经被问了很多次。 Android Studio错误的含义:未注释参数覆盖@NonNull参数 (编辑:修正了@NonNull注释的含义,感谢ci_)

谢谢。我尝试导入android.support.annotation.NoNNull,但Android Studio找不到注释。那个解决方案对我不起作用。 - user3339562
2
@JHH,你没有正确阅读问题,原则是相同的,但细节是不同的。在这种情况下,该方法使用@NonNull进行注释,这意味着您不能从中返回“null”。savedInstanceState参数可以为空。甚至在文档中特别提到了这种情况。 - ci_
谢谢@ci_。显然我太急了。 - JHH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接