Android Studio 3.2之后如何解决NonNull注释?

时间:2018-09-30 19:45:35

标签: android android-studio android-lint android-studio-3.2

更新到Android Studio 3.2之后,我收到了皮棉说的“可能的错误”:

"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之前从未标记过此方法,但是现在我在该方法和“ parent”参数上得到了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;

6 个答案:

答案 0 :(得分:6)

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

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

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

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

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

不再看到这种疯狂的行为。

Screenshot

答案 1 :(得分:0)

出现此警告的任何方法参数,请使用@NonNull对其进行注释。您要覆盖的所有方法都将出现在该方法上(在@Override上方或下方的行)。

答案 2 :(得分:0)

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

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

或者忽略它。

答案 3 :(得分:0)

  

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

很清楚。

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

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

这将表明getView不能是null,其中包含任何这些参数。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
}