Android jetpack组件之Navigation使用(基于androidx 基于kotlin)

 

最近有点空余时间,来学点新东西,就开始学习之前一直想学的Jetpack组件

所以先从Navigation开始,废话不多说直接开始:

一.先添加相关依赖

    // Java
    implementation "androidx.navigation:navigation-fragment:$nav_version"
    implementation "androidx.navigation:navigation-ui:$nav_version"

    // Kotlin
    implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
    implementation "androidx.navigation:navigation-ui-ktx:$nav_version"

 

二.在res目录下新建navigation文件夹,并创建一个navigation类型的xml文件

Android jetpack组件之Navigation使用(基于androidx 基于kotlin)_第1张图片

内容如下:



    
        
    

    
        
        
    

    
        
    


三.新建三个Fragment并设置跳转事件

class MainPage1Fragment : Fragment() {


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

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        btn_one.setOnClickListener{
            Navigation.findNavController(it).navigate(R.id.action_page2)
        }
    }

}

class MainPage2Fragment : Fragment() {

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

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        btn_two.setOnClickListener {
            //点击返回page1
            Navigation.findNavController(it).navigateUp()
        }
        btn_two_2.setOnClickListener {
            Navigation.findNavController(it).navigate(R.id.action_page3)
        }
    }
}


class MainPage3Fragment : Fragment() {

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

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        btn_three.setOnClickListener {
            Navigation.findNavController(it).navigateUp()
        }

    }
}

四.Mainactivity相关配置

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    }

    override fun onSupportNavigateUp() =
        findNavController(R.id.my_nav_host_fragment).navigateUp()


}

对应的xml:




    //加载定义的nav_graph_main.xml文件

最终大功告成

效果图如下:

Android jetpack组件之Navigation使用(基于androidx 基于kotlin)_第2张图片Android jetpack组件之Navigation使用(基于androidx 基于kotlin)_第3张图片Android jetpack组件之Navigation使用(基于androidx 基于kotlin)_第4张图片

              图一                                                                  图二                                                          图三

跳转逻辑如下:

点击图一的按钮切换到Page2,点击图二按钮分别跳转到page3和上一个页面

相关源码:https://download.csdn.net/download/u013075460/11847256

 

 

 

你可能感兴趣的:(Android jetpack组件之Navigation使用(基于androidx 基于kotlin))