Я использую компонент контроллера навигации.скажем, у меня есть 4 фрагмента
A -> B -> C или D
из фрагмента A, он может перейти только к фрагменту B. Но если мы находимся во фрагменте B, этоможет перейти к фрагменту C или фрагменту D.
Я хочу выполнить метод workXYZ()
во фрагменте onResume B, если он происходит из фрагмента A, и я хочу выполнить метод doSomethingABC()
во фрагменте onResume B, если онпроисходит от фрагмента C или фрагмента D.
от фрагмента A до фрагмента BI, используйте код ниже:
val BDestination = FragmentADirections.actionToFragmentB()
Navigation.findNavController(fragmentView).navigate(BDestination)
, чтобы добраться до фрагмента C и фрагмента D из фрагмента B, я использую глобальное действие.поскольку фрагмент C & D фактически используется не только фрагментом B. поэтому я использую код, подобный приведенному ниже, чтобы перейти к фрагменту C или D
val CDestination = BFragmentDirections.actionGlobalFragment()
Navigation.findNavController(fragmentView).navigate(CDestination)
, а из фрагмента C или фрагмента D я использую кнопку возврата, чтобывернуться к фрагменту B.
Я попытался использовать безопасные аргументы boolean comesFromFragmentA
= true в графе навигации, чтобы дать знак, что фрагмент B идет после фрагмента A. но, к сожалению, это значение в безопасных аргументахлогическое значение comesFromFragmentA
останется прежним (true), если оно исходит из фрагмента C или D.
, что мне делать, если вы хотите узнать, появляется ли фрагмент B после предыдущего фрагмента или из фрагмента после?