AndroidStudio 3.2后如何解决NonNull注解?
How to solve NonNull annotation after Android Studio 3.2?
更新到 Android Studio 3.2 后,我从 lint 得到一个 "Probable bugs" 说:
"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" class,superclass 有那 5 个导入以红色突出显示
import android.annotation.ArrayRes;
import android.annotation.IdRes;
import android.annotation.LayoutRes;
import android.annotation.NonNull;
import android.annotation.Nullable;
出现此警告的任何方法参数,用@NonNull 对其进行注释。在出现此方法的地方重写任何方法,执行相同的操作(在 @Override 之上或之下的行)。
将@NonNull 注释添加到您的方法:
@NonNull
@Override
public void myOverridenMethod() {
//your code
}
或者忽略它。
"Not annotated method overrides method annotated with @NonNull".
很清楚了。
您可能应该从方法中删除其中一个 @NonNull
(或者可能那些已经添加到方法中并且只是制作方法 @NonNull
),所以:
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent)
这将表明 getView
不能 null
包含任何这些参数。
尝试使缓存无效并重新启动 Android Studio。
我有同样的问题,因为我的 android gradle 工具太旧(2.x)只是将项目 android gradle 工具升级到 3.x 解决这个问题。
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
我也遇到了同样的问题,终于找到了解决办法,希望对你有用...
打开设置,select "Editor",然后 "Inspections"。
在检查列表中,转到 "Probable Bugs",然后转到“@NotNull/@Nullable 问题”。
在右窗格中,select "CONFIGURE ANNOTATIONS" 按钮。
将 "androidx.annotation.Nullable" 和 "androidx.annotation.NonNull" 添加到各自的列表中。我也将它们设置为默认值。
不再看到这种令人抓狂的行为。
更新到 Android Studio 3.2 后,我从 lint 得到一个 "Probable bugs" 说:
"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" class,superclass 有那 5 个导入以红色突出显示
import android.annotation.ArrayRes;
import android.annotation.IdRes;
import android.annotation.LayoutRes;
import android.annotation.NonNull;
import android.annotation.Nullable;
出现此警告的任何方法参数,用@NonNull 对其进行注释。在出现此方法的地方重写任何方法,执行相同的操作(在 @Override 之上或之下的行)。
将@NonNull 注释添加到您的方法:
@NonNull
@Override
public void myOverridenMethod() {
//your code
}
或者忽略它。
"Not annotated method overrides method annotated with @NonNull".
很清楚了。
您可能应该从方法中删除其中一个 @NonNull
(或者可能那些已经添加到方法中并且只是制作方法 @NonNull
),所以:
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent)
这将表明 getView
不能 null
包含任何这些参数。
尝试使缓存无效并重新启动 Android Studio。
我有同样的问题,因为我的 android gradle 工具太旧(2.x)只是将项目 android gradle 工具升级到 3.x 解决这个问题。
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
我也遇到了同样的问题,终于找到了解决办法,希望对你有用...
打开设置,select "Editor",然后 "Inspections"。
在检查列表中,转到 "Probable Bugs",然后转到“@NotNull/@Nullable 问题”。
在右窗格中,select "CONFIGURE ANNOTATIONS" 按钮。
将 "androidx.annotation.Nullable" 和 "androidx.annotation.NonNull" 添加到各自的列表中。我也将它们设置为默认值。
不再看到这种令人抓狂的行为。