我应该用4个片段将cityName添加到导航组件中的Bundle中多少次



我已经用4个片段实现了导航组件:

F1 -> F2 -> F3 -> F4

要从F1->F2,我使用:

val bundle = bundleOf("cityName" to cityName)
findNavController().navigate(R.id.second_fragment, bundle)

现在,我想传播";cityName";一直到F4。当从F2->导航时,是否也需要做同样的事情;F3F3->F4,还是像我已经做过的那样只做一次就足够了?

如果使用参数,则需要将它们从一个片段传播到另一个片段,因为每个片段可以有不同的参数集。您可以通过使用Safe Args插件来改进这一点。

备选方案1

在单个活动的情况下,很容易定义共享视图模型来控制应用程序的通用ui部分(例如,应用程序栏标题(

interface HostViewModel {

val screenTitle: LiveData<String>
fun setScreenTitle(title: String)
}

备选方案2

您可以为流创建嵌套图(F1->…->F4(,并将目标视图模型与绑定

最新更新