Как получить ViewModel по ViewModels?(Фрагмент-KTX) - PullRequest
4 голосов
/ 25 июня 2019

Я работаю с Single viewModel для Activity и всего ее фрагмента.

Таким образом, чтобы инициализировать viewmodel, если необходимо записать этот установочный код в onActivityCreated всех фрагментов

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        viewModel = ViewModelProviders.of(activity!!).get(NoteViewModel::class.java)
    }

Я подробно изучил страницу расширения Android KTX: ( см. Здесь )

и я обнаружил, что могу инициализировать модель вида следующим образом:

    // Get a reference to the ViewModel scoped to this Fragment
    val viewModel by viewModels<MyViewModel>()

    // Get a reference to the ViewModel scoped to its Activity
    val viewModel by activityViewModels<MyViewModel>()

Итак, я добавил ниже зависимости для моего gradle (приложения):

    //ktx android
    implementation 'androidx.core:core-ktx:1.0.2'
    implementation 'androidx.fragment:fragment-ktx:1.0.0'
    implementation "androidx.lifecycle:lifecycle-extensions:2.0.0"

Но когда я пытаюсь использовать viewModels/activityViewModels в моем приложении, их ссылка не найдена.

Мне нужна помощь в использовании этих расширений с каким-то базовым примером, который я пытался найти, но не нашел примеров.

Ответы [ 3 ]

2 голосов
/ 02 июля 2019

1001 * попробовать *

implementation 'androidx.fragment:fragment-ktx:1.1.0-beta01'
1 голос
/ 16 июля 2019

Функция расширения viewModels (...) была добавлена ​​в версии 1.1.0-alpha03 . Поэтому, чтобы использовать его в своем приложении, вам нужно будет использовать фрагмент-ktx версий, соответствующих 1.1.0-alpah03 или новее.

Я только что узнал об этом, и поэтому я прибег к использованию версии 1.1.0-rc01 , потому что я не хотел использовать альфа / бета-версии.

0 голосов
/ 10 июля 2019

Вы используете эту последнюю альфа-версию:

dependencies {
    implementation 'androidx.fragment:fragment-ktx:1.2.0-alpha01'
}
...