使用androidx.navigation从片段中返回数据的方法如下:
findNavController().currentBackStackEntry?.savedStateHandle
来获取。下面是一个示例代码:
在源片段中:
val navController = findNavController()
val resultLiveData = navController.currentBackStackEntry?.savedStateHandle?.getLiveData<String>("result")
resultLiveData?.observe(viewLifecycleOwner) { result ->
// 处理返回的数据
Log.d("TAG", "返回的数据:$result")
}
在目标片段中:
val navController = findNavController()
val resultBundle = Bundle().apply {
putString("result", "返回的数据")
}
val previousBackStackEntry = navController.previousBackStackEntry
previousBackStackEntry?.savedStateHandle?.set("result", resultBundle)
navController.navigateUp()
这样,当目标片段返回结果时,源片段的回调函数会被触发,并可以获取到返回的数据。
领取专属 10元无门槛券
手把手带您无忧上云