【发布时间】:2020-11-25 08:16:02
【问题描述】:
我在底部导航中有四个片段和一个活动,底部导航是使用这样的 NavController 设置的
navController = Navigation.findNavController(this, R.id.dashboardNavHostFragment).apply {
setGraph(R.navigation.nav_graph , bundle)
}
bottomNavigationView.setupWithNavController(navController)
我正在传递一些我在底部导航的第一个片段中需要的数据。 问题是它工作正常,数据像这样进入片段中
private val args: PlayerFeedFragmentArgs by navArgs()
private var data: String? = args.name
但是当我使用底部导航导航并返回到我的第一个片段时,数据以 null 的形式出现 我尝试使用
保存数据override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString("name", data)
}
并在 onViewCreated 中取回数据,但它不起作用,因为在底部导航的片段之间切换时不会调用 onSaveInstanceState。
如何在我的第一个片段中保存来自活动的传入参数,以便当我从底部导航切换片段时它保持不变。
【问题讨论】:
-
您可以使用单个视图模型,它将在这些片段之间共享。
-
对需要相同数据的片段使用
SharedViewModel。 -
实际上我不想与底部导航的其他片段共享数据,我只想保存我的第一个片段的状态,以便当我从其他片段返回到它时 args 或名称不为空。
标签: android android-fragments bottomnavigationview android-architecture-navigation android-navigation