Совместное использование видовой модели между несколькими фрагментами в нижней навигации с помощью Android Компонент навигации - PullRequest
0 голосов
/ 27 января 2020

У меня есть приложение, в котором я использую фрагмент с navHost и подключил к нему график навигации. Этот фрагмент, назовем его основным фрагментом, должен загрузить некоторые данные, которые будут использоваться каждой из вкладок в нижней части навигации. Это похоже на идеальное использование Shared ViewModel.

Но нет очевидного способа использовать его с нижней навигацией. Существует метод navGraphViewModels(), используемый с kotlin делегатом:

val parentViewModel: CourtDetailRootVM by navGraphViewModels(R.id.court_detail)

, но который создает исключение:

 java.lang.IllegalArgumentException: No destination with ID 2131296449 is on the NavController's back stack

, поскольку согласно документации этот метод ищет модель представления, которая является в текущем backstack, что не относится к нижней навигации!

Есть несколько других способов получения родительского viewModel, но все они требуют повторного использования ViewModelFactory. Я не могу использовать это, потому что моя фабрика имеет конструктор с некоторыми аргументами, которые необходимо передать, и у меня нет доступа к этим аргументам на дочерних фрагментах.

Итак, я застрял и могу Не вижу никакого возможного решения этой довольно тривиальной проблемы

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