Установите данные в модель представления nav_graph/фрагмента, которая запустила этот nav_graph/фрагмент, не зная, кто запустил этот nav_graph

#android #android-jetpack-navigation

Вопрос:

Пожалуйста, сначала поймите -> в моем приложении у меня есть вложенные nav_graphs сказать ( A , B , C ) и других вложенных nav_graph сказать («Д») D может быть запущен с любого из A , B , C , все из них имеют модели ViewModel области , например ( vmA , vmB , vmC ) все эти модели ViewModel дети baseVM которых есть собственность p .

С nav_graph D может быть запущен из A , B , C поэтому я знаю, что в D есть модель представления живы, которая связана с nav_graph ( A или B или C ) кто бы ни начал D и я также знаю, что модель представления имеет свойство p поскольку все vm дети basevm , но я не знаю, кто завел D так, я не могу сделать экземпляр viewmodel и установить p , потому что я не знаю, кто начал D , но я знаю, что тот, кто начал это не отскочила в backstack так это ВМ жив

Как мне получить ссылку на viewmodel, которая запущена D и установлена p ?

и я не хочу if регистрироваться, D так как он закрыт для модификации, а также я не хочу делиться данными с помощью виртуальной машины с областью действия, потому что это может привести к ошибкам в моем случае использования и будет потреблять память на протяжении всего срока службы приложения.

В моем случае использования он хочет рассказать A B , или C о том , что я сделал D , это попытка

setFragmentResult api, но я получаю результат после задержки , более поздний код выполняется до того , как я проверю результат и изменю поток , я предполагаю, что это асинхронно, я хочу, чтобы результат был синхронным.

также пробовал getBackStackEntry() api, но не смог четко понять это из документации.