В kotlin, как использовать ViewModel с ViewModelProvider.AndroidViewModelFactory? - PullRequest
0 голосов
/ 02 февраля 2019

В моем текущем проекте я использую следующую строку:

mViewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)

Например, ViewModel, но в https://developer.android.com/reference/android/arch/lifecycle/ViewModelProviders.html#ViewModelProviders() рекомендуем использовать ViewModelProvider.AndroidViewModelFactory, поскольку ViewModelProviders() устарел на уровне API1.1.0.

есть идеи для этого?

Ответы [ 2 ]

0 голосов
/ 21 августа 2019

Вы можете попробовать этот код

    ViewModelProvider.AndroidViewModelFactory.getInstance(application).create(UserViewModel::class.java)
0 голосов
/ 02 февраля 2019

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

Вы используете его, вызывая соответствующий метод of для вашего варианта использования, передавая Fragment или Activity, а затем вызывая get для ViewModelProvider, который возвращает:

val viewModel = ViewModelProviders.of(thisFragment).get(MyViewModel::class.java)

Если вы не указали свою собственную фабрику во втором параметре метода of, по умолчанию будет использоваться AndroidViewModelFactory.Эта реализация может создавать подклассы ViewModel без параметров конструктора или с расширением AndroidViewModel, например:

class MyViewModel(application: Application) : AndroidViewModel(application) {

    // use application

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...