如何使用 Android 中的导航控制器组件检测片段是来自前一个片段还是来自之后的片段?
how to detect if a fragment comes from previous fragment or comes from the fragment afterwards using navigation controller component in Android?
-
android
-
android-navigation
-
android-architecture-components
-
android-jetpack
-
android-architecture-navigation
我正在使用导航控制器组件。假设我有 4 个片段
A --> B --> C 或 D
从分片A,只能到分片B。但是如果我们在分片B,它可以到分片C,也可以到分片D。
如果来自片段A,我想在onResume片段B中执行方法workXYZ()
,如果来自片段C或片段D,我想在onResume片段B中执行方法doSomethingABC()
.
从片段 A 到片段 B 我使用下面的代码:
val BDestination = FragmentADirections.actionToFragmentB()
Navigation.findNavController(fragmentView).navigate(BDestination)
为了从片段 B 到达片段 C 和片段 D,我使用了全局操作。因为片段 C 和 D 实际上不仅被片段 B 使用。所以我使用如下代码转到片段 C 或 D
val CDestination = BFragmentDirections.actionGlobalFragment()
Navigation.findNavController(fragmentView).navigate(CDestination)
然后从片段 C 或片段 D,我使用后退按钮返回到片段 B。
我尝试在导航图中使用安全参数布尔值 comesFromFragmentA
= true 以给出片段 B 在片段 A 之后的标志。但不幸的是,安全参数布尔值 comesFromFragmentA
如果它来自片段 C 或 D,则将保持不变 (true)。
那么如果想知道分片B是出现在前一个分片之后还是从后分片出现怎么办?
片段参数是可变的,因此您可以随时更改它们。因此,您可以在导航之前更新该参数值,以表示将来 onResume()
调用将在您 return 之后调用此片段:
// Set the comesFromFragmentA argument to signify that the next onResume()
// will be when you come back to this Fragment
arguments.putBoolean("comesFromFragmentA", false)
// Now navigate
val CDestination = BFragmentDirections.actionGlobalFragment()
Navigation.findNavController(fragmentView).navigate(CDestination)
android
android-navigation
android-architecture-components
android-jetpack
android-architecture-navigation
我正在使用导航控制器组件。假设我有 4 个片段
A --> B --> C 或 D
从分片A,只能到分片B。但是如果我们在分片B,它可以到分片C,也可以到分片D。
如果来自片段A,我想在onResume片段B中执行方法workXYZ()
,如果来自片段C或片段D,我想在onResume片段B中执行方法doSomethingABC()
.
从片段 A 到片段 B 我使用下面的代码:
val BDestination = FragmentADirections.actionToFragmentB()
Navigation.findNavController(fragmentView).navigate(BDestination)
为了从片段 B 到达片段 C 和片段 D,我使用了全局操作。因为片段 C 和 D 实际上不仅被片段 B 使用。所以我使用如下代码转到片段 C 或 D
val CDestination = BFragmentDirections.actionGlobalFragment()
Navigation.findNavController(fragmentView).navigate(CDestination)
然后从片段 C 或片段 D,我使用后退按钮返回到片段 B。
我尝试在导航图中使用安全参数布尔值 comesFromFragmentA
= true 以给出片段 B 在片段 A 之后的标志。但不幸的是,安全参数布尔值 comesFromFragmentA
如果它来自片段 C 或 D,则将保持不变 (true)。
那么如果想知道分片B是出现在前一个分片之后还是从后分片出现怎么办?
片段参数是可变的,因此您可以随时更改它们。因此,您可以在导航之前更新该参数值,以表示将来 onResume()
调用将在您 return 之后调用此片段:
// Set the comesFromFragmentA argument to signify that the next onResume()
// will be when you come back to this Fragment
arguments.putBoolean("comesFromFragmentA", false)
// Now navigate
val CDestination = BFragmentDirections.actionGlobalFragment()
Navigation.findNavController(fragmentView).navigate(CDestination)