Let\'s say that we have two fragments: MainFragment and SelectionFragment. The second one is build for selecting some object, e.g. an integer. Ther
Use these extension functions
fun Fragment.getNavigationResult(key: String = "result") =
findNavController().currentBackStackEntry?.savedStateHandle?.get(key)
fun Fragment.getNavigationResultLiveData(key: String = "result") =
findNavController().currentBackStackEntry?.savedStateHandle?.getLiveData(key)
fun Fragment.setNavigationResult(result: T, key: String = "result") {
findNavController().previousBackStackEntry?.savedStateHandle?.set(key, result)
}
So if you want to send result from Fragment B to fragment A
Inside Fragment B
setNavigationResult(false, "someKey")
Inside Fragment A
val result = fragment.getNavigationResultLiveData("someKey")
result.observe(viewLifecycleOwner){ booleanValue-> doSomething(booleanValue)