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

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

航图是包括所有的目标视图和操作的一个资源文件,这个导航图标代表了我们应用的所有的导航路径图。...控制面板分成了三部分分别是: Destinations panel(目标面板):列出当前导航的主机以及当前图解编辑器当中的所有目的地。 Graph Editor(图解编辑器): 这里包含了导航图的。...="@+id/nav_graph"> 这里的是导航图的根元素,当我们要在图标当中添加目标视图和连接动作的时候,我们可以使用...tools:layout="@layout/fragment_two"/> 导航到目标视图 导航到目标视图,我们需要用到NavController,它是用于管理NavHost的应用程序导航的对象...如果我们没有使用app:popUpToInclusive =“true”那么也意味着我们的堆栈当中包含两个A的实例。

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

Android Navigation + Fragment 制作APP主页面导航(步骤 + 源码)

从这个图来看,项目本身没有任何问题,为了保险起见,建议先运行一下。 1. 添加依赖 Navigation 是JetPack的组件,感兴趣可以去查看Google JetPack官方文档。...那么这里又添加是为什么,因为你如果在导航图中指明了某一个Fragment的布局,那么在代码中就可以不用指明,也可以两者都指明,但至少要有一个地方指明,所以我这样写是可以的。...明明这个NavController还什么都没有做的,为什么就可以显示了呢?实际上它已经在工作了,只是你没有注意而已。...Navigation.findNavController(this, R.id.nav_host_fragment); 通过这一行代码这个工作开关就已经打开了,打开读取导航图中第一个要显示Fragment...底部导航栏控制Fragment切换 在上面已经添加了底部导航栏,但是这个导航栏还没有和NavHost绑定起来,所以自然就无法在切换底部导航的同时,改变NavHost的Fragment。

8.8K42

导航: 嵌套导航图和 | MAD Skills

概述 在本系列之前的文章,我们增加了咖啡记录功能,使用导航 UI 提高了用户体验,并且实现了有条件导航。...嵌套导航图 我们从导航图开始。嵌套图允许您在父导航图中将一系列目的地页面分组。 我们看一眼导航图,coffeeList 和 coffeeEntryDialog 目的地页面非常适合转换为嵌套图。...Include 标签 除了使用嵌套图之外,我还可以提取图到新的导航 xml 文件。我在这里创建了一个新的 xml 文件,名称为 coffee_graph,并且将嵌套图的内容迁移到这个文件。...:coffee") implementation project(":core") //.. } 请注意这里的导航图没有任何变化,它不受这些修改的影响: △ 导航图没有发生变化 现在如果运行应用...总结 在本文中,我们了解了如何创建嵌套导航图,以及如何使用 include 标签来模块化甜甜圈记录应用。 在下一篇文章,我们会更进一步学习如何使用功能模块进行导航。敬请关注!

1.6K30

知识点 | ViewModel 四种集成方式

在后两种情况,我们通常都希望重建 Activity。ViewModel 会帮您处理第二种情况,因为在这种情况下 ViewModel 没有被销毁;而在第三种情况下, ViewModel 被销毁了。...Ian Lake 在他的演讲: 单 Activity 架构: 为什么、什么情况下以及如何使用中介绍了一些我们选择单一 Activity 架构的原因,而与本文相关的一点,是这种架构允许在多个界面 (destination...ViewModel 与 NavGraph 集成 Navigation 2.1.0 引入了依托一个导航图 (navigation graph) 创建 ViewModel 的功能。...在使用时,您需要先把一个界面集合 (例如: 登录流程、支付流程的相关界面),放到一个嵌套导航图 (nested navigation graph) 。...想要创建嵌套导航图,您需要选中对应流程相关的界面,点击鼠标右键,并选择 Nested Graph → New Graph: △ 创建嵌套导航图的截图 注意嵌套导航图在 XML 文件id,在这里是

2.4K20

知识点 | ViewModel 四种集成方式

在后两种情况,我们通常都希望重建 Activity。ViewModel 会帮您处理第二种情况,因为在这种情况下 ViewModel 没有被销毁;而在第三种情况下, ViewModel 被销毁了。...Ian Lake 在他的演讲: 单 Activity 架构: 为什么、什么情况下以及如何使用中介绍了一些我们选择单一 Activity 架构的原因,而与本文相关的一点,是这种架构允许在多个界面 (destination...ViewModel 与 NavGraph 集成 Navigation 2.1.0 引入了依托一个导航图 (navigation graph) 创建 ViewModel 的功能。...在使用时,您需要先把一个界面集合 (例如: 登录流程、支付流程的相关界面),放到一个嵌套导航图 (nested navigation graph) 。...想要创建嵌套导航图,您需要选中对应流程相关的界面,点击鼠标右键,并选择 Nested Graph → New Graph: △ 创建嵌套导航图的截图 注意嵌套导航图在 XML 文件id,在这里是

20420

MyBatis-21MyBatis高级结果映射【一对多映射(2种方式)】

通过上述这个例子应该明白了id的作用了,需要注意的是,很肯能出现一种没有配置id的情况。...当没有配置id的时候,MyBatis就会把resultMap配置的说哟字段进行比较,如果所有字段的值都相同就合并,只要有一个字段值不同,就不合并。...在嵌套结果配置id属性时,如果查询没有查询id属性配置的列,就会导致id对应的值为null.这种情况下,所有的id都相同,因此会使嵌套的集合只有一条数据。...= r.id inner join sys_privilege p on p.id = rp.privilege_id 这里需要特别注意sys_privilege表的别名。...= r.id inner join sys_role_privilege rp on rp.role_id = r.id inner join sys_privilege p on p.id = rp.privilege_id

94441

深入浅出 NavigationUI | MAD Skills

之后我会用到这些目的页面的 id ;) △ 带有新的目的页面的导航图 更新导航图之后,我们可以开始将元素绑定起来,并且实现导航到 SelectionFragment。...比如,当您在最顶层的目的页面时,就不会显示回退按钮,因为没有更高层级的页面。 默认情况下,您应用的最初页面是唯一的最顶层目的页面,但是您也可以定义多个最顶层目的页面。...NavigationUI 依赖 MenuItem 的 id,用它与导航图中目的页面的 id 进行匹配。我还为每个目的页面设置了图标和标题。...setupWithNavController(navController) } 请注意我并没有从导航图中调用任何导航操作。实际上导航图中甚至没有前往 coffeeList Fragment 的路径。...为了使代码保持整洁、各个元素之间更加清晰,我们会在新的方法实现相关操作,并且在 onCreate() 调用该方法。

3K30

导航组件概览 | MAD Skills

导航组件介绍 导航组件包括了相关 API 和 Android Studio 的设计工具,其大大简化了您应用中导航流程的创建和编辑。以前没有导航组件的时候,应用的导航任务是由我们手动编码实现的。...在之前图表的导航图中,您还可以发现两个目的地之间的箭头,它们定义了导航图中可能的导航操作 (action)。...我们可以用导航工具来定义新的目的地,当我们还没有准备好目的地的 Fragment 类的时候,我们可以用占位符,也可以使用已存在的 Fragment 类。...在导航图中的每个目的地都是 fragment,每个目的地都包括 0 个或更多的操作 (action),操作定义了如何导航到导航图中的其他目的地。...它在导航图中提供了一个可能目的地的菜单栏。NavigationView 其中一个很酷的特性是,您可以使用菜单项的 ID 自动地导航到对应菜单项关联的目的地,从而避免了手动创建基于菜单选择的重复代码。

1.6K30

【Flink】第二十七篇:三天撸了一个 Flink SQL 字段血缘算法

于是,开始了一段之前没有的关于SQL解析引擎的探索之路。...程序运行结果 直接上算法程序的运行结果: 测试用例: select l.id, l.name, r.id, r.ts from (select name, id from leftT) as l inner...join (select ts, id from rightT) as r on l.id = r.id 这个测试用例,最外层是一个select语句,它的from条件为一个Flink典型的双流regular...: select l.id, l.name, r.id, r.ts depth: 2,有两行输出结果,分别表示join操作的左右流子查询的查询结果: // (select name, id from...在遍历处理函数对当前RelNode包含的字段进行打印,打印操作包含两个重要的索引:字段继承自上游索引的索引值,重新编排本字段在当前遍历操作的顺序索引值。

2.1K40

深入浅出etcd之raft实现

选举失败在Candidate状态接收到其他节点发送的心跳信息,且心跳的任期id大于自己,则变为follower。...为了避免长期没有leader产生,raft采用如下策略避免: 选举超时时间为随机值,第一个超时的节点带着最大的任期id立刻进入新一任的选举 如果存在多个Candidate同时竞选的情况,发送拉票请求也是一段随机延时...其中投票的判断逻辑主要分两步:1.如果投票信息的任期id 是否 小于自身的id,则直接返回nil。...:= range r.prs { if id == r.id { continue } var ctx []byte if t == campaignTransfer {...如果transfee没有最新的日志数据,则leader进行日志的同步,当同步完成收到回复且正处在leader transfer的过程,发送MsgTimeoutNow,之后与上述流程一致。

9.3K81

mysql慢查询优化方法_MySQL查询优化

r.id = ur.role_id AND u.id = ur.user_id ; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KHmaiveK-1637292608956...WHERE username = 'stu1')) id 有相同也有不同时,id 相同的可以认为是一组,从上往下顺序执行;在所有的组id 的值越大的组,优先级越高,越先执行 EXPLAIN SELECT...`user_id` = '2') a WHERE r.id = a.role_id ; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PG8Bw4qL-1637292608959...一般来说需要保证查询至少达到 range 级别, 最好达到 ref ---- key possible_keys: 指出 MySQL 能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出...,但不一定被查询使用 如果该列是 NULL,则没有相关的索引 key: 显示MySQL在查询实际使用的索引,若没有使用索引,显示为 NULL 查询若使用了覆盖索引,则该索引可能出现在 key 列表,

14.1K40
领券