Не удается разрешить символ ViewModelProviders

Я работаю над компонентом архитектуры Android ViewModel, но я получаю вышеупомянутую ошибку при попытке инициализировать ViewModel в AppCompatActivity.

import android.arch.lifecycle.ViewModelProviders;
ViewModelProviders.of(this).get(CounterViewModel.class);

Есть несколько вопросов и статей, связанных с этим, и они указали на добавление lifecycle:extensions а также lifecycle:viewmodel зависимости в файле приложения, но я все еще получаю сообщение об ошибке.

implementation "android.arch.lifecycle:extensions:1.1.1"
implementation "android.arch.lifecycle:viewmodel:1.1.1"
annotationProcessor "android.arch.lifecycle:compiler:1.1.1"

Пакет android.arch.lifecycle не содержит класс ViewModelProviders и это только имеет ViewModelProvider учебный класс.

Что еще нужно добавить для доступа к ViewModelProviders учебный класс?

Редактировать:

Зависимости в app/build.gradle:

dependencies {
    implementation project(':lifecycle')
    implementation project(':base')
    implementation "android.arch.lifecycle:extensions:1.1.1"
    implementation "android.arch.lifecycle:viewmodel:1.1.1"
    annotationProcessor "android.arch.lifecycle:compiler:1.1.1"
}

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

1 ответ

Решение

android.arch.lifecycle:extensions:1.1.1 определенно имеет android.arch.lifecycle.ViewModelProviders, Вы можете увидеть это в Android Studio, если откроете часть "Внешние библиотеки" дерева проекта и изучите содержимое библиотеки:

android.arch.lifecycle: расширения: 1.1.1 Содержание

Некоторые возможные причины не найти import включают:

  • У тебя есть implementation "android.arch.lifecycle:extensions:1.1.1" в неправильном месте (должно быть в dependencies закрытие модуля build.gradle файл, такой как app/build.gradle)

  • Вы не синхронизировали Android Studio с файлами сборки Gradle (обычно вам предлагается сделать это, но вы можете сделать это вручную из меню "Файл"> "Синхронизировать проект с файлами Gradle" из главного меню Android Studio).

Вам не нужны оба lifecycle:extensions а также lifecycle:viewmodel в вашем файле build.gradle удалите

implementation "android.arch.lifecycle:viewmodel:1.1.1"

и теперь все должно быть в порядке. Кроме того, вы можете перейти на AndroidX и использовать версии 2.0.0 библиотеки.

ViewModelProvidersтеперь устарела. ИспользоватьViewModelProvider вместо.

Если вы настраиваете в libary, вы можете изменить implementation в api

Другие вопросы по тегам