Navigation的一些问题
2021-01-07 本文已影响0人
MIRROR1217
1.startDestination传参和重定向问题
val navController = findNavController(R.id.nav_host_fragment)
val navInflater = navController.navInflater
val graph = navInflater.inflate(R.navigation.mobile_navigation)
graph.startDestination = R.id.navigation_dashboard
navController.setGraph(graph,Bundle().apply {
putString("test","test")
})
2.fragment返回传参问题
我们知道Activity可以通过setResult返回参数,所以Fragment也可以这样,不过需要更新版本
implementation "androidx.fragment:fragment-ktx:1.3.0-beta01"
然后使用setFragmentResult返回参数
override fun onStop() {
super.onStop()
parentFragment?.setFragmentResult("requestKey",Bundle().apply {
putString("id","notifacation")
})
}
在Fragment接收参数
override fun onResume() {
super.onResume()
parentFragmentManager.setFragmentResultListener("key", this,
FragmentResultListener { requestKey, result -> Log.d("requestKey",requestKey)})
}
3.fragment返回键监听
val obj = object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
Log.d("back","back")
}
}
requireActivity().onBackPressedDispatcher.addCallback(this,obj)