ViewModelProviders устарела.После обновления расширений жизненного цикла: с 2.1.0 до 2.2.0-alpha05 - PullRequest
2 голосов
/ 28 сентября 2019

Android Studio -> Новый проект -> Выбор «Активность с вкладками».

После обновления расширений жизненного цикла с 2.1.0 до 2.2.0-alpha05 ViewModelProviders устарела.В простых случаях его можно заменить на «by viewModels ()», например:

plHlFrModel = ViewModelProviders.of(this).get(PlHlFrModel::class.java)

заменяется на:

private val plHlFrModel by viewModels<PlHlFrModel>()

Но я не могу понять, как заменить этот:

pageViewModel =  ViewModelProviders.of(this)
     .get(PageViewModel::class.java).apply {
         setIndex(arguments?.getInt(ARG_SECTION_NUMBER) ?: 1)
      }

где и как разместить блок {} в форме "by viewModel"?Может есть другой способ?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

ViewModelProviers не рекомендуется, мы просто используем ViewModelProvider .

Прямой доступ

pageViewModel = ViewModelProvider(this)
     .get(PageViewModel::class.java).apply {
         setIndex(arguments?.getInt(ARG_SECTION_NUMBER) ?: 1)
      }

с использованием делегата

private val pageViewModel by viewModels<PageViewModel>()

//function scope
pageViewModel.setIndex(arguments?.getInt(ARG_SECTION_NUMBER) ?: 1)
0 голосов
/ 28 сентября 2019

Вместо использования ViewModelProviders.of(this) используйте ViewModelProvider(This)

...