Доступ к `ViewModel` внутри` Activity` в области навигации - PullRequest
1 голос
/ 19 сентября 2019

Внутри Activity вы можете получить ViewModel с этой областью Activity, например:

val viewModel = ViewModelProviders.of(this)[ViewModel::class.java]
//or
val viewModel by viewModels<ViewModel>()

Аналогично в Fragment вы можете получить ViewModel на

//scoped to parent Activity
val viewModel: ViewModel by activityViewModels()

//scoped to parent Fragment
val viewModel: ViewModel by viewModels({ requireParentFragment() })

//scoped to navigation graph
val viewModel: ViewModel by navGraphViewModels(R.id.login_graph)

Теперь, если я попытаюсь получить доступ к ViewModel внутри Activity, который ограничен областью навигации, тогда нет вспомогательного метода, поэтому я должен сделать

val viewModel by lazy {
    ViewModelProvider(findNavController(R.id.nav_host_fragment)
            .getViewModelStoreOwner(R.id.your_graph).viewModelStore,
            ViewModelProvider.AndroidViewModelFactory.getInstance(application)
    ).get(ViewModel::class.java)
}

Есть ли помощникметод, который я пропустил?Должен ли я получить к нему доступ через область навигации?Могу ли я просто использовать область видимости Activity для доступа к тому же ViewModel?

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