ViewModelProviders устарела в 2.2.0 - PullRequest
0 голосов
/ 21 февраля 2020

В настоящее время я обновляю androidx.lifecycle:lifecycle-extensions версию с 2.2.0-alpha01 до 2.2.0, и это показывает, что ViewModelProviders удален. Так какой же альтернативный способ использовать ViewModelProviders в kotlin?

Ответы [ 3 ]

3 голосов
/ 08 апреля 2020

Например, если вы используете более старую версию.

MyViewModel myViewModel = new ViewModelProviders.of(this, new MyViewModelFactory(this.getApplication(), "Your string parameter")).get(MyViewModel.class);

Например, для последней версии

MyViewModel myViewModel = new ViewModelProvider(this, viewModelFactory).get(MyViewModel.class);

ИЛИ, используйте ViewModelStore ссылка

MyViewModel myViewModel = new ViewModelProvider(getViewModelStore(), viewModelFactory).get(MyViewModel.class);
1 голос
/ 21 февраля 2020

Как сказано в документации , теперь вы можете просто использовать конструкторы ViewModelProvider напрямую. В большинстве случаев следует изменить ViewModelProviders.of( на ViewModelProvider(, но вы можете увидеть полный список того, какие новые методы соответствуют каким старым методам, а также в документации .

В Kotlin вы также можете использовать делегат свойства by viewModels() в ваших Activity / Fragment для получения отдельных ViewModel s. Например:

val model: MyViewModel by viewModels()
0 голосов
/ 05 мая 2020

старая версия

var viewModel = ViewModelProviders.of(this).get(BaseViewModel::class.java)

Теперь альтернатива

В java

viewModel = ViewModelProvider(this).get(BaseViewModel.class);

В kotlin

var  viewModel = ViewModelProvider(this).get(BaseViewModel::class.java)

Refs - https://developer.android.com/reference/androidx/lifecycle/ViewModelProviders

...