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

How many times should I add cityName to Bundle in Navigation Component with 4 fragments?

我已经实现了包含 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 plugin.

来改善这一点

备选方案 1

在单个 activity 的情况下,很容易定义 shared view model 来控制应用的常见 ui 部分(例如应用栏标题)

interface HostViewModel {
    
    val screenTitle: LiveData<String>

    fun setScreenTitle(title: String)
}

备选方案 2

您可以为它创建 nested graph for your flow (F1->...->F4) and tie destination view model