我已经用4个片段实现了导航组件:
F1 -> F2 -> F3 -> F4
要从F1->F2,我使用:
val bundle = bundleOf("cityName" to cityName)
findNavController().navigate(R.id.second_fragment, bundle)
现在,我想传播";cityName";一直到F4。当从F2->导航时,是否也需要做同样的事情;F3和F3->F4,还是像我已经做过的那样只做一次就足够了?
如果使用参数,则需要将它们从一个片段传播到另一个片段,因为每个片段可以有不同的参数集。您可以通过使用Safe Args插件来改进这一点。
备选方案1
在单个活动的情况下,很容易定义共享视图模型来控制应用程序的通用ui部分(例如,应用程序栏标题(
interface HostViewModel {
val screenTitle: LiveData<String>
fun setScreenTitle(title: String)
}
备选方案2
您可以为流创建嵌套图(F1->…->F4(,并将目标视图模型与绑定