Navigation
Navigation
是一个可简化Android导航的库和插件。
Navigation是用来管理Fragment
的切换,并且可以通过可视化的方式,看见App的交互流程。
实战
名称 | 用途 |
---|---|
Navigation graph | XML资源文件,包含所有的navigation关联信息,用户在可视化界面可以看出他能够到达的destination ,以及流程关系 |
NavHost | 在navigation graph展示destination 的空容器,NavHostFragment为展示fragment destination的具体实现 |
NavController | 导航控制者 |
创建Navigation graph
1 | <navigation xmlns:android="http://schemas.android.com/apk/res/android" |
新建NavHostFragment
1 | <fragment |
界面跳转、参数传递和动画
利用id导航
1 | fun Fragment.findNavController(): NavController = |
1 | btnLogin.setOnClickListener { |
利用Safe Args
action标签:
属性 | 作用 |
---|---|
app:destination | 跳转完成到达的fragment 的id |
app:popUpTo | 将fragment从栈中弹出,直到某个Id的fragment |
argument标签:
|属性|作用|
|android:name|标签名字|
|app:argType|标签的类型|
|android:defaultValue|默认值|
1 | <fragment |
自动生成两个文件:
1 | class TasksFragmentDirections private constructor() { |
你还是得写点击事件来完成导航:
1 | clsss TasksFragment : Fragment() { |