web-dev-qa-db-ja.com

Android Studio 3.2の後にNonNullアノテーションを解決する方法は?

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;
}

AndroidLintは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;
6
Karl Ghosn

私はこれと同じ問題を抱えていましたが、最終的に修正を発見しました、それがあなたのために働くことを願っています...

[設定]を開き、[エディタ]、[検査]の順に選択します。

インスペクションのリストで、「Probable Bugs」、「@ NotNull/@Nullableproblems」の順に移動します。

右側のペインで、[注釈の構成]ボタンを選択します。

「androidx.annotation.Nullable」と「androidx.annotation.NonNull」をそれぞれのリストに追加します。また、それらをデフォルトにしました。

この厄介な行動はもう見られません。

Screenshot

4
tliebeck

キャッシュを無効にして、Android Studioを再起動してください。

0

この警告が表示されるメソッドパラメータには、@ NonNullアノテーションを付けてください。これが表示される場所でオーバーライドするメソッドはすべて、同じようにします(@Overrideの上または下の行で)。

0
sbearben

@NonNullアノテーションをメソッドに追加します。

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

または単にそれを無視します。

0
TheWanderer

私のAndroid gradleツールが古すぎます(2.x)プロジェクトをアップグレードするだけなのでAndroid gradleツールを3.xに解決するので同じ問題があります。

dependencies {
    classpath 'com.Android.tools.build:gradle:3.2.1'
}
0
AlphaBoom

「アノテーションなしのメソッドは、@ NonNullアノテーション付きのメソッドをオーバーライドします」。

それはかなり明確です。

おそらくそれらの1つを削除する必要があります@NonNullメソッドから(または、メソッドにすでに追加されていて、メソッドを作成している人もいます@NonNull)、 そう:

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

これにより、これらのパラメータのいずれかが内部にある場合、getViewnullにすることはできません。

0
ʍѳђઽ૯ท