Используйте ViewModelFactory внутри Fragment - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь поделиться ViewModel между моей деятельностью и моим фрагментом. Моя ViewModel содержит report, который является сложным объектом, который я не могу сериализовать.

    protected val viewModel: ReportViewModel by lazy {
        val report = ...
        ViewModelProviders.of(this, ReportViewModelFactory(report)).get(ReportViewModel::class.java)
    }

Теперь я пытаюсь получить доступ к модели представления во фрагменте, но я не хочу передавать всю фабрикупараметры снова.

Как указано в документации ViewModelProvider.get:

Возвращает существующую модель представления или создает новую в области действия

Я хочучтобы получить доступ к экземпляру ViewModel, определенному в упражнении, поэтому я попытался выполнить следующее, но он логически завершился сбоем, поскольку модель не имеет пустого конструктора:

protected val viewModel: ReportViewModel by lazy {
    ViewModelProviders.of(requireActivity()).get(ReportViewModel::class.java)
}

Как получить доступ к его «заводским» моделям представления вфрагмент? Должны ли мы передать фабрику на фрагмент?

Спасибо!

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