У меня есть приложение, в котором я использую фрагмент с 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. Я не могу использовать это, потому что моя фабрика имеет конструктор с некоторыми аргументами, которые необходимо передать, и у меня нет доступа к этим аргументам на дочерних фрагментах.
Итак, я застрял и могу Не вижу никакого возможного решения этой довольно тривиальной проблемы