我应该将 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 -> F3 和 F3 -> 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
我已经实现了包含 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 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