ViewModelProviders устарел в версии 2.2.0.

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


person Sudip Sadhukhan    schedule 21.02.2020    source источник


Ответы (3)


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

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

val model: MyViewModel by viewModels()
person Ryan M    schedule 21.02.2020

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

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

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

В Java

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

В Котлине

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

Ссылки — https://developer.android.com/reference/androidx/lifecycle/ViewModelProviders

person ahks    schedule 05.05.2020
comment
в Java viewModel = new ViewModelProvider(this).get(BaseViewModel.class); - person Max Gabderakhmanov; 10.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);
person Chirag Bhuva    schedule 08.04.2020