NavHost:是一个容器也是一个控制器,如图: Fragment:可以在一个Activity里面加入多个Fragment,功能独立,切换时压入栈顶 NavController:控制器,控制导航的逻辑,把某个页面切出去,换进来; Navgraph:页面切换的逻辑;是一个资源文件,所以应该在res里面的Android Resoure File创建选择navigation,然后将需要的页面加入进来并连上对应的切换顺序(action)。
val navController = Navigation.findNavController(it)
navController.navigate(action)
controller = Navigation.findNavController(this, R.id.fragment)
NavigationUI.setupActionBarWithNavController(this, controller)
数据传递: arguments:在获取页面:val id: Int = getArguments().getInt("id") 就可以得到id;它可以放入常见的一些数据类型。 bundle:在传递的时候就需要navController.navigate(action,bundle)加入其中,获取同上。 ViewModle + LiveData + Databinding: 因为它们的生命周期是大于Activity的,所以Fragment也可以在任何时候去访问数据,这样也算是做到数据的共享和传递。
|