6

更新到 Android Studio 3.2 后,我从 lint 得到一个“可能的错误”,说:

"Not annotated method overrides method annotated with @NonNull".

在更新到 Android Studio 3.2 之前我没有遇到任何问题,我该如何解决这个问题?

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    View row = convertView;
    ViewHolder holder;

    if (convertView == null) {
        holder = new ViewHolder();
        row = LayoutInflater.from(context).inflate(R.layout.gallery_view_row, parent, false);
        holder.imageView = row.findViewById(R.id.filePath);
        row.setTag(holder);
    } else holder = (ViewHolder) row.getTag();

    String file_path = objects.get(position);
    GlideApp.with(context).load(MovieDB.IMAGE_URL + context.getResources().getString(R.string.galleryImgSize) + file_path)
            .into(holder.imageView);
    return row;
}

Android Lint 在 Android Studio 3.2 更新之前从未标记过此方法,但现在我在方法和“父”参数上获得了 2 个标志

这是使用的 2 个导入

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

问题只存在于“ArrayAdapter”类,超类有这 5 个导入以红色突出显示

import android.annotation.ArrayRes;
import android.annotation.IdRes;
import android.annotation.LayoutRes;
import android.annotation.NonNull;
import android.annotation.Nullable;
4

6 回答 6

11

我遇到了同样的问题,终于找到了解决方法,希望它对你有用...

打开设置,选择“编辑器”,然后选择“检查”。

在检查列表中,转到“可能的错误”,然后转到“@NotNull/@Nullable 问题”。

在右侧窗格中,选择“配置注释”按钮。

将“androidx.annotation.Nullable”和“androidx.annotation.NonNull”添加到各自的列表中。我也将它们设为默认值。

不再看到这种令人抓狂的行为。

截屏

于 2018-12-06T12:28:48.207 回答
0

出现此警告的任何方法参数都使用@NonNull 对其进行注释。任何您在其出现的地方覆盖的方法,都执行相同的操作(在@Override 上方或下方的行上)。

于 2018-09-30T19:47:47.740 回答
0

将 @NonNull 注释添加到您的方法中:

@NonNull
@Override
public void myOverridenMethod() {
    //your code
}

或者只是忽略它。

于 2018-09-30T19:47:55.297 回答
0

“未注释的方法会覆盖使用 @NonNull 注释的方法”。

这很清楚。

您可能应该@NonNull从方法中删除其中一个(或者可能已经添加到方法中并且只是制作方法的那些@NonNull),所以:

@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent)

这将说明内部getView不能null包含任何这些参数。

于 2018-09-30T19:54:41.560 回答
0

尝试使缓存无效并重新启动 Android Studio。

于 2018-09-30T21:52:33.413 回答
0

我有同样的问题,因为我的 android gradle 工具太旧(2.x)只是将项目 android gradle 工具升级到 3.x 解决了这个问题。

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
}
于 2018-11-09T07:14:53.143 回答