【问题标题】:onCreateDialog not annotated method overrides method annotated with @NonNullonCreateDialog 未注解的方法覆盖使用@NonNull 注解的方法
【发布时间】:2015-03-23 15:46:00
【问题描述】:

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

没有注解的方法会覆盖用@NonNull注解的方法

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

如果我想将该注释放置到我的方法中,Android Studio 找不到该注释。

为什么会这样?感谢您的帮助。

【问题讨论】:

标签: android


【解决方案1】:

查看DialogFragmentonCreateDialog方法的定义,你会看到:

@NonNull
public Dialog onCreateDialog(Bundle savedInstanceState)

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

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

【讨论】:

    【解决方案2】:

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

    请在提交前搜索您的问题,这个问题被问了很多次。

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

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

    【讨论】:

    • 谢谢。我尝试导入 android.support.annotation.NoNNull 但 Android Studio 找不到注释。该解决方案对我不起作用。
    • @JHH 你的问题没看错,原理是一样的,只是细节不一样。在这种情况下,该方法使用@NonNull 进行注释,这意味着您不能从中返回nullsavedInstanceState 参数很可能为空。文档中甚至还特别提到了这种情况。
    • 谢谢@ci_。显然我太快了。
    猜你喜欢
    • 2014-08-21
    • 1970-01-01
    • 2015-12-15
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    相关资源
    最近更新 更多