首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

谷歌官方组件Navigation你会用了吗?

在XML文件当中添加NavHostFragment 在我们应用程序main activity当中添加NavHostFragment 这里添加有两种方式 1.复制下面代码到xml代码文件当中...tools:layout="@layout/fragment_two"/> 导航到目标视图 导航到目标视图,我们需要用到NavController,它是用于管理NavHost应用程序导航对象...(Activity, @IdRes int viewId) Navigation.findNavController(View) 对于Kotlin来说: Fragment.findNavController...() View.findNavController() Activity.findNavController(viewId: Int) 下面我们就看一下在我们要实现效果: ?...在代码当中,我们不用写很多Activity。写一个Activity嵌套多个Fragment就可以完成,当然这也是谷歌一直推崇一种方式。

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

Jetpack源码解析---看完你就知道Navigation是什么了?

fragment之间切换参数传递方法也很简单,之前我们可能要通过宿主Activity或者接口等方法,总之挺麻烦,下面我们看看通过Navigation控制Fragment之间怎么传递?...不为null,它执行了popBackStackInternal,看注释意思为从之前graph栈弹出所有的graph: boolean popBackStackInternal(@IdRes int...@IdRes int viewId) { View view = ActivityCompat.requireViewById(activity, viewId); NavController...作为参数传递过去: public void navigate(@IdRes int resId, @Nullable Bundle args, @Nullable NavOptions navOptions...到底是什么,所以我们先分析了布局**NavHostFragment,我们发现为什么要在布局声明了一个NavHostFragment,**它是用来做什么,最后发现在它生命周期中创建了一个NavController

2.2K20

Jetpack源码解析---看完你就知道Navigation是什么了?

fragment之间切换参数传递方法也很简单,之前我们可能要通过宿主Activity或者接口等方法,总之挺麻烦,下面我们看看通过Navigation控制Fragment之间怎么传递?...不为null,它执行了popBackStackInternal,看注释意思为从之前graph栈弹出所有的graph: boolean popBackStackInternal(@IdRes int...@IdRes int viewId) { View view = ActivityCompat.requireViewById(activity, viewId); NavController...作为参数传递过去: public void navigate(@IdRes int resId, @Nullable Bundle args, @Nullable NavOptions navOptions...到底是什么,所以我们先分析了布局**NavHostFragment,我们发现为什么要在布局声明了一个NavHostFragment,**它是用来做什么,最后发现在它生命周期中创建了一个NavController

2.5K30

1. Android_Jetpack组件---Naviagtion源码解析

fragment之间切换参数传递方法也很简单,之前我们可能要通过宿主Activity或者接口等方法,总之挺麻烦,下面我们看看通过Navigation控制Fragment之间怎么传递?...不为null,它执行了popBackStackInternal,看注释意思为从之前graph栈弹出所有的graph: boolean popBackStackInternal(@IdRes int...@IdRes int viewId) { View view = ActivityCompat.requireViewById(activity, viewId); NavController...作为参数传递过去: public void navigate(@IdRes int resId, @Nullable Bundle args, @Nullable NavOptions navOptions...到底是什么,所以我们先分析了布局**NavHostFragment,我们发现为什么要在布局声明了一个NavHostFragment,**它是用来做什么,最后发现在它生命周期中创建了一个NavController

2.1K10

Jetpack组件之Navigation

Fragment切换包括对AppBar管理、Fragment间切换动画以及Fragment间参数传递。在此过程实现代码比较复杂混乱。...添加NavHostFragment NavHostFragment是一种特殊Fragment,我们需要将它添加到Activity布局文件,作为其它Fragment容器。 <!...可以使用查询参数占位符代替路径参数,也可以将查询参数占位符与路径参数结合使用。 使用默认值或可为 null 值所定义变量查询参数占位符无需匹配。...多余查询参数不会影响深层链接 URI 匹配。 启用隐式深层链接,还需要向应用manifest文件添加nav-graph标签。...backStackindex, int destid) { return backStackindex + "-" + destid; } 然后在Activity创建自定义

3K20

Jetpack:新一代导航管理Navigation

添加NavHost 下一步我们需要向Activity添加导航宿主,导航宿主是一个空页面,必须实现NavHost接口,我们使用Navigation提供默认NavHost————NavHostFragment...同一布局如果有多个导航宿主(比如双窗口)则必须制定一个为默认导航宿主。 这时候我们运行应用,就可以发现Activity已经可以展示FirstFragment了。...navigate(@IdRes int resId, @Nullable Bundle args) { 这里不一一列举了,大家自行查看源码即可。...注意在onViewCreated不仅为FragmentView添加了tag,同时还为其父View也添加了,这样做目的是在Activity也可以获取到NavController,这点下面就会遇到。...除此之外,Google还提供了Safe Args Gradle插件,该插件可以生成简单对象和构建器类,这些类支持在目的地之间进行类型安全导航和参数传递。

86520

【Jetpack】Navigation 导航组件 ④ ( Fragment 跳转中使用 safe args 安全传递参数 )

ID , 即可完成页面跳转 ; public open fun navigate(@IdRes resId: Int) Navigation 机制 , 还提供了可以传入 Bundle 参数跳转方法..., 调用该方法 , 可以在页面跳转时 , 传递一个 Bundle 参数 , 其中可以封装一系列参数键值对 ; public open fun navigate(@IdRes resId: Int,...argument 参数信息 如果要从 FragmentB 跳转到 FragmentA 页面时 , 传递数据 , 就将参数信息设置在该 FragmentB 对应配置文件 ; 参数格式为 :..., args) 后续章节可以查看 FragmentB 完整代码 ; 6、FragmentA 获取参数 在 FragmentA , 调用 getArguments 函数 , 获取页面跳转传递 Bundle...NavigationGraph ; I、MainActivity 页面布局 这是 主页面 Launcher Activity 布局 , 之后 Fragment 布局 就替换到 fragment

44720

安卓第八夜 玛丽莲梦露

ArrayAdapter构造器接收三个参数,第一个为Context,第二个说明了条目的具体构图,第三个为包含有数据表。...由于数据是字符串类型表,ArrayAdapter也有一个String类型参数。一个ArrayAdapter包含了数据和条目的具体格式。...需要注意第二个参数android.R.layout.simple_list_item_1,它是安卓框架自己提供一个简单XML布局,包含了一个TextView元素。...该方法第一个参数代表了条目的编号,第二个参数是条目的视图,第三个参数代表了母视图,也就是整个ListView。需要注意第二个参数,即convertView。...如果没有可以重复利用条目视图,那么该参数就为null。此时,我们需要如if结构那样,重建新条目视图。 我将要赋予给条目的视图布局保存在list_category.xml

61010

安卓第八夜 玛丽莲梦露

ArrayAdapter构造器接收三个参数,第一个为Context,第二个说明了条目的具体构图,第三个为包含有数据表。...由于数据是字符串类型表,ArrayAdapter也有一个String类型参数。一个ArrayAdapter包含了数据和条目的具体格式。...需要注意第二个参数android.R.layout.simple_list_item_1,它是安卓框架自己提供一个简单XML布局,包含了一个TextView元素。...该方法第一个参数代表了条目的编号,第二个参数是条目的视图,第三个参数代表了母视图,也就是整个ListView。需要注意第二个参数,即convertView。...如果没有可以重复利用条目视图,那么该参数就为null。此时,我们需要如if结构那样,重建新条目视图。 我将要赋予给条目的视图布局保存在list_category.xml

1.9K90

ViewBinding 与 Kotlin 委托双剑合璧

可以看到,并没有一种绝对优势方法,但越往后整体效果是有提升。另外,❓是什么呢?...第一个类型参数 F 是属性所有者,第二个参数 V 是属性类型,因为我们在 Fragment 定义属性,属性类型为 ViewBinding,所谓定义类型参数为 <in F : Fragment, out...在老版本 Java ,传递代码块需要使用匿名内部类实现,而使用 lambda 表达式甚至连函数声明都不需要,可以直接传递代码块作为函数值; 问题 6、Fragment::requireView 是什么...把函数 bind() 作为参数传递,bind 函数参数为 View,返回值为 ViewBinding,与函数声明 (View) -> V 匹配。...(@IdRes id: Int): V { return ActivityCompat.requireViewById(this, id) } /** * Utility to find root

1.6K20

【Android进阶必学】JetPack指路明灯—Navigation

创建Activity并引入NavHostFragment 在Activityxml布局,通过FragmentContainerView来创建这些Fragment容器,代码如下所示。...在NavHostFragment,有两个重要参数,即mGraphId和mDefaultNavHost,保存着我们从xml解析出来数据。...返回,指定要返回到Fragmentid,即可直接返回到指定位置,第二个参数inclusive,代表返回操作是否包含指定Fragment id。...首先,需要在Fragment容器,去掉navGraph引用,然后在Activity,动态指定要引用navGraph,代码如下所示。...,Navigation动态加载也是将navGraph从xml创建好之后设置给navigation,接收参数的话,与正常参数传递是一样

2K00
领券