Android Studio не может разрешить импорт

#android #kotlin #delegates #kotlin-delegate #mvrx

#Android #kotlin #делегаты #kotlin-делегировать #mvrx

Вопрос:

Я пытаюсь работать над образцом проекта, чтобы изучить MvRx. Однако, похоже, что-то не так. Android Studio не может автоматически находить и импортировать activityViewModel .

1) Я попытался импортировать его вручную, написав имя его пакета, но он по-прежнему серый.

2) На вкладке Gradle я выбрал свой корневой проект и нажал на Refresh Gradle Project , чтобы обновить все зависимости. Это тоже не помогло.

В чем проблема?

введите описание изображения здесь

Ответ №1:

Если кто-то получает ту же ошибку даже при использовании activityViewModel() во фрагменте, этот ответ может быть полезен.

В моем случае я использовал activityViewModel() внутренний фрагмент. Тем не менее, я получал это, а также многие другие ошибки. Наконец, я выяснил, что теперь используется mvrx kotlin coroutines , и все зависимости от rxjava удаляются в 2.0.0-beta1 .

Чтобы решить эту проблему, используйте

 implementation "com.airbnb.android:mvrx-rxjava2:2.0.0-beta3"
  

вместо

 implementation "com.airbnb.android:mvrx:2.0.0-beta3"
  

в разделе зависимостей вашего build.gradle .

Ответ №2:

Код вашей функции должен находиться во фрагменте (который расширяет BaseMvRxFragment), а не в Activity.

Комментарии:

1. Да, вы правы. Я сделал это после того, как понял, что не могу реализовать свой код таким образом. В любом случае, спасибо за ваш ответ.

Ответ №3:

Поскольку у вас есть другие com.airbnb.mvrx. references, которые разрешились правильно, это означает, что у вас есть ссылка на библиотеку com.airbnb.mvrx. Однако, вполне вероятно, что у вас есть другая версия библиотеки, на которую ссылается исходный автор образца. Посмотрите в своем файле build.gradle зависимости и посмотрите, есть ли у вас библиотека, на которую там есть ссылка. Если это так, сравните его версию с версией в примере, если она отличается, затем измените ссылку на номер версии образца. Если нет, то добавьте ссылку на библиотеку с соответствующим номером версии библиотеки, в которой существует этот объект.

 dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.airbnb.mvrx:mvrx:12.0.1'
  

}

Комментарии:

1. Спасибо, Майкл за ваш ответ. я думаю, это внутренняя ссылка. У меня есть эта строка в моем файле gradle: implementation 'com.airbnb.android:mvrx:1.0.0' которая поступает из github.com/airbnb/MvRx#installation

2. Посмотрите, можете ли вы найти какую-либо документацию по activityViewModel в этой библиотеке. Иногда у них будет информация о том, в какой версии библиотеки она была доступна. Возможно, этот компонент доступен только в версии 1.1.0 библиотеки (или любой другой, которую вы найдете в документации), и в этом случае вам следует изменить свой файл gradle на чтение: реализация ‘com.airbnb.android: mvrx: 1.1.0’ Затем вам нужно будет повторно синхронизировать ваши файлы gradle.