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,然后通过连线的的方式添加之间的跳转关系,具体的触发事件,后面在代码中设置,这里只是设计了页面间的跳转关系
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);
要想返回前一个FragmentNavigation.findNavController(getView()).popBackStack();
更多细节参考官方文档:https://developer.android.google.cn/topic/libraries/architecture/navigation/上一篇: jQuery $.extend()用法总结_jquery
下一篇: 抽象类 接口
推荐阅读
-
android开发之listView组件用法实例简析
-
Android四大组件之Service(服务)实例详解
-
Android编程四大组件之Activity用法实例分析
-
Android编程四大组件之BroadcastReceiver(广播接收者)用法实例
-
Android编程开发之Spinner组件用法
-
android开发之listView组件用法实例简析
-
Android编程四大组件之BroadcastReceiver(广播接收者)用法实例
-
Android编程四大组件之Activity用法实例分析
-
Android四大组件之Service(服务)实例详解
-
Android高级界面组件之拖动条和评星条的功能实现