欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android新架构组件之Navigation

程序员文章站 2022-05-28 23:25:04
...

两个Fragment如何实现类似Activity之间的跳转和传值?在AS3.2 beta版 发布时,出现了一个新的架构组件Navigation,可以实现Fragment之间的跳转以及Fragment跳转到Activity。

1.引入依赖:

implementation 'android.arch.navigation:navigation-fragment:1.0.0-alpha01'
implementation "android.arch.navigation:navigation-runtime:1.0.0-alpha01"
2.创建Navigation配置文件
  在res下创建navigation目录,新建Navigation resource file,这里就叫nav_graph.xml, 在设计视图下,可以添加fragment和Activity,然后通过连线的的方式添加之间的跳转关系,具体的触发事件,后面在代码中设置,这里只是设计了页面间的跳转关系
Android新架构组件之Navigation

3.在需要使用Navigation的主Activity的布局文件中设置NavHostFragment, 参考代码如下:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".StartActivity">
    <fragment //用于展示的容器
        android:id="@+id/my_nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"   
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_graph"/>
</FrameLayout>
4. 在Fragment中实现跳转
 Bundle bundle = new Bundle();
 bundle.putString("uid", "111");
 Navigation.findNavController(getView()).navigate(R.id.action_startFragment_to_userProfileFragment, bundle); 
 传递的参数获取:String userId = getArguments().getString(UID_KEY);
 要想返回前一个Fragment
Navigation.findNavController(getView()).popBackStack();
更多细节参考官方文档:https://developer.android.google.cn/topic/libraries/architecture/navigation/

相关标签: Navigation