Как решить аннотацию NonNull после Android Studio 3.2? - PullRequest
0 голосов
/ 30 сентября 2018

После обновления до 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 флага для метода и для параметра «parent»

Вот 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 голосов
/ 06 декабря 2018

У меня возникла та же проблема, наконец-то обнаружил исправление, надеюсь, оно вам подходит ...

Откройте «Настройки», выберите «Редактор», затем «Инспекции».

Всписок проверок, перейдите к «Вероятные ошибки», а затем «@ NotNull / @ Nullable проблемы».

На правой панели выберите кнопку «НАСТРОЙКИ АННОТАЦИЙ».

Добавить «androidx.annotation.Nullable "и" androidx.annotation.NonNull "в соответствующие списки.Я также установил их по умолчанию.

Больше не вижу этого безумного поведения.

Screenshot

0 голосов
/ 09 ноября 2018

У меня та же проблема, потому что мои инструменты для Android Gradle слишком старые (2.x), просто обновите инструменты для Android Gradle до 3.x, чтобы решить эту проблему.

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
}
0 голосов
/ 01 октября 2018

Попробуйте сделать недействительными кэши и перезапустите Android Studio.

0 голосов
/ 30 сентября 2018

"Не аннотированный метод переопределяет метод, аннотированный @NonNull".

Это довольно ясно.

Возможно, вам следует удалить один из этих @NonNull из метода(ИЛИ, может быть, те, кто уже добавлен в метод и просто создает метод @NonNull), поэтому:

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

Это скажет, что getView не может быть null с любым изэти параметры внутри.

0 голосов
/ 30 сентября 2018

Добавьте аннотацию @NonNull к своему методу:

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

Или просто проигнорируйте ее.

0 голосов
/ 30 сентября 2018

Любой параметр метода, где появляется это предупреждение, аннотируйте его @NonNull.Любой метод, который вы переопределяете там, где это появляется, делайте то же самое (в строке над или под @Override).

...