且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用 Android 导航将数据传回上一个片段

更新时间:2023-01-10 11:40:52

Android 刚刚为此发布了一个解决方案;在目的地之间传递数据(导航 2.3.0-alpha02),基本上,在片段 A 中,您观察变量的变化,而在片段 B 中,您在执行 popBackStack() 之前更改该值.

Android just released a solution for this; Passing data between Destinations (Navigation 2.3.0-alpha02), basically, in fragment A you observe changes in a variable and in fragment B you change that value before executing popBackStack().

片段 A:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val navController = findNavController();
// We use a String here, but any type that can be put in a Bundle is supported
navController.currentBackStackEntry?.savedStateHandle?.getLiveData<String>("key")?.observe(
    viewLifecycleOwner) { result ->
    // Do something with the result.
  }
}

片段 B:

navController.previousBackStackEntry?.savedStateHandle?.set("key", result)
navController.popBackStack()