Android Navigation 初识

2018年Google I/O大会中推出的一个新的架构组件。

在此之前我使用过类似这种单Fragment构建App的框架,Zhuinden/simple-stack ,但是官方出手,最为致命,

本着不得不学的态度,我有必要去学习和使用它。

Google git 项目地址

官方文档

首先我们需要导入lib

 implementation "androidx.navigation:navigation-fragment-ktx:2.0.0"
    implementation "androidx.navigation:navigation-ui-ktx:2.0.0"

创建2个Fragment

class Page1Fragment:Fragment() {
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        return inflater.inflate(R.layout.fragment_page_1,container,false)

    }

}
class Page2Fragment:Fragment() {
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.fragment_page_2,container,false)

    }

  
}

这两个Fragment都只有一个Button

在res文件夹下创建一个navigation文件夹

Android Navigation 初识_第1张图片

在这个文件夹下创建一个xml Android Navigation 初识_第2张图片

如果没有该选项,可以在File ------> other Settings -->default Settings    Experimental 中勾选Enable Navigation Editor

Android Navigation 初识_第3张图片

重启Android Studio 即可

创建完xml  切换到Design视图,点击Add 添加你想要操作的Fragment 

切换回Text视图




    
        
        
    
    
        
    

给page1Fragment 添加action  

Action的属性

id: action的id,作为此action的唯一标识了

destination 属性表示你要跳转的fragment,直接打开新的

launchSingleTop: false or true  是否将这个fragment 的启动模式设置为SingleTop   默认为false 

popUpTo   跳转到已存在的指定的fragment  ,如果不存在,不会跳转,也不会报错 

提示:

Ignoring popBackStack to destination sample.xietaichen.testnavigation:id/page2Fragment as it was not found on the current back stack

转场动画:

enterAnim

exitAnim

popEnterAnim

popExitAnim

在点击事件中说那个这个action :

 button2.setOnClickListener {

            Navigation.findNavController(it).navigate(R.id.to_page2)
        }

这样就是使用了之前定义的action 

想要执行类似Activity 的finish 功能可以这样

Navigation.findNavController(it).navigateUp()

 

你可能感兴趣的:(Android学习笔记)