Nano Hash - криптовалюты, майнинг, программирование

ViewModel в Kotlin: неразрешенная ссылка

Я пытаюсь реализовать ViewModel в приложении 100% Kotlin. В каждой части документации, которую я могу найти, говорится, что я хочу использовать это для получения экземпляра ViewModel:

ViewModelProviders.of(this).get(CustomViewModel::class.java)

Согласно документам, я должен иметь возможность импортировать это с помощью:

import android.arch.lifecycle.ViewModelProviders

Однако этот импорт не разрешен. Я использую следующее в моем файле сборки:

def androidArchVersion = '1.1.1'
implementation "android.arch.lifecycle:viewmodel:$androidArchVersion"
implementation "android.arch.lifecycle:livedata:$androidArchVersion"
annotationProcessor "android.arch.lifecycler:compiler:$androidArchVersion"
testImplementation "android.arch.core:core-testing:$androidArchVersion"

Почему я не могу получить доступ к ViewModelProviders?


Ответы:


1

Включите следующее в качестве зависимости:

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

Эта зависимость предназначена как для ViewModel, так и для LiveData, и поэтому вам не потребуется указывать отдельные зависимости для одного и того же; т. е. первые две указанные вами зависимости можно заменить на вышеупомянутую зависимость расширений жизненного цикла.

20.04.2018
  • Да, это было проблемой! 20.04.2018
  • После добавления этой строки у меня все еще была та же проблема. Наконец, я обнаружил, что использую ViewModelProvider без s в конце. 30 минут пытаюсь понять это. Спасибо! 26.06.2018
  • Эквивалентная зависимость AndroidX — "androidx.lifecycle:lifecycle-extensions:2.0.0". 12.04.2019
  • А как насчет activityViewModels? 17.01.2020
  • Ради всего святого. ... s за победу. 27.03.2020

  • 2

    В моем случае мне не хватало:

    implementation "androidx.fragment:fragment-ktx:1.1.0"
    
    20.08.2020
  • Спасибо сработало для меня, только что вы ответили 5 часов назад???? 20.08.2020
  • Я сделал все предложения, и ничего не сработало, кроме как включить эту зависимость 01.10.2020
  • Это сработало и для меня. Хорошо поймал 13.06.2021

  • 3

    В дополнение к тому, что предложил Sup, вам нужно будет исправить lifecycler:compiler на lifecycle:compiler - синхронизация Gradle даже не должна успешно завершиться с этой опечаткой.

    Во-вторых, стандартная обработка аннотаций Android («annotationProcessor») не работает с Kotlin. Вместо этого используйте Kotlin kapt.

    В верхней части файла build.gradle добавьте следующее:

    apply plugin: 'kotlin-kapt'.

    И в разделе зависимостей замените вхождения annotationProcessor (как указано выше) на kapt, например.

    kapt "android.arch.lifecycle:compiler:1.1.1"

    20.04.2018
  • Я полагал, что это предложение будет показано. Я проверил это, но сохранил это отдельно, так как это не устранило нерешенную проблему со ссылками. Спасибо за нет и за опечатку (которая почему-то синхронизировалась). 20.04.2018

  • 4

    Если описанное выше «добавление/обновление зависимостей» не решило вашу проблему, попробуйте перезапустить свою студию Android. Это просто рут, я не вижу в этом большой проблемы. Надеюсь, поможет.

    13.12.2019

    5

    Я столкнулся с такой проблемой в AndroidStudio 3.0.1 и решил ее, добавив следующие зависимости в соответствующий build.gradle:

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

    код версии может отличаться, поскольку AndroidStudio сообщит вам, если он отличается.

    06.09.2018

    6

    Это также можно решить, установив для minSdkVersion значение 21.

    Если у вас minSdkVersion 21 или выше, implementation "android.arch.lifecycle:extensions:1.1.1" вам не понадобится.

    29.08.2019

    7
    android {
        kotlinOptions {
            jvmTarget = '1.8'
        } 
    }
    

    уровень приложения проекта e

    24.10.2020

    8

    Я решаю это, делая вот так. реализовать эту зависимость

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

    затем вызовите мой класс ViewModel

    homeViewModel = ViewModelProvider(this).get(HomeViewModel::class.java)
    
    05.06.2021
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..