onCreateDialog没有带注释的方法覆盖用@NonNull注释的方法

use*_*562 7 android

我正在创建DialogFragment,当我想覆盖时,onCreateDialog我收到以下警告:

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

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    return super.onCreateDialog(savedInstanceState);
}
Run Code Online (Sandbox Code Playgroud)

如果我想将该注释放在我的方法中,Android Studio无法找到该注释.

为什么会这样?谢谢你的帮助.

小智 16

看一下onCreateDialog方法的定义DialogFragment,你会看到:

@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState)
Run Code Online (Sandbox Code Playgroud)

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

@Override
@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
    return super.onCreateDialog(savedInstanceState);
}
Run Code Online (Sandbox Code Playgroud)


JHH*_*JHH 6

因为您覆盖了一个用 @NonNull 注释定义的方法(意味着该方法不得返回 null),并且您没有在覆盖的实现中使用相同的注释,所以这使得它不匹配。

请在提交前搜索您的问题,这已被多次询问。

Android Studio 错误的含义:未注释的参数覆盖@NonNull 参数

(编辑:@NonNull 注释的固定含义,感谢 ci_)

  • @JHH 你没看对问题,原理是一样的,只是细节不一样。在这种情况下,该方法使用 @NonNull 进行注释,这意味着您不能从中返回 `null`。`savedInstanceState` 参数很可能为空。文档中甚至特别提到了这种情况。 (2认同)