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

安卓Navigation系列——入门篇

而通过Jetpack导航组件——Navigation,就可以很方便管理各fragment之间切换,让开发变得更简单。...组成三要素 Navigation graph 一个包含所有导航相关信息 XML 资源 NavHostFragment 一种特殊Fragment,用于承载导航内容容器 NavController 管理应用导航对象...,相当于上图中每条线,destination定义跳转目标页,还可以定义跳转动画等等 添加NavHostFragment MainActivity布局文件中配置NavHostFragment...,首先得到navController对象,然后调用它navigate方法,传入前面nav_graph中定义actionid即可。...更多用法 在编辑nav_graph时候,action属性除了设置目标页外,还可以设置动画、页面间参数传递、fragment回退栈管理等 动画 enterAnim: 进场目标页面动画 exitAnim

2K51

【详解】Android Jetpack 新组件之Navigation用法和源码结构分析

简化fragment栈管理,终结IllegalStateExceptions这个异常?...>>>> 传递数据 您可以通过两种方式目标之间传递数据:使用Bundle对象或使用safeargs Gradle插件以类型安全方式传递数据。...= view.findViewById(R.id.textViewAmount); tv.setText(getArguments().getString("amount")); 2、以类型安全方式目标之间传递数据...导航架构组件有一个名为safeargsGradle插件,它生成简单对象和构建器类,以便对目标和动作指定参数进行类型安全访问。...先看看NavHostFragment,NavHostFragment布局中提供一个载体,控制和管理导航行为。它实现NavHost,NavHost是提供导航接口,便于扩展。

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

Navigation用法

页面的切换通常还包括对应用程序App bar管理,Fragment之间切换动画以及Fragment之间参数传递。...Graph中Fragment正是通过NavHostFragment进行展示   NavController:导航控制器,用于代码中完成Navigation Graph中具体页面切换动作   它们三者之间关系可以通过下面的这段话来理解...:当你想要切换Fragment,使用NavController对象,告诉它你想要去Navigation Graph中哪个Fragment,NavController会将你想去Fragment展示...5.使用NavController完成导航       经过以上步骤后,我们还需要通过NavController对象代码中完成具体页面跳转工作,我们需要在MainFragment布局文件中添加一个...然后,我们就可以利用所生成代码文件,Fragment之间进行参数传递了,代码如下: //MainFragment @Override public void onClick(View view

25620

安卓Navigation系列——进阶篇

点击底部可以切换页面,有了上一篇基础,先新建一个nav_graph导航资源文件,包含三个framgent子节点 <?...可能大家迫不及待想应用到自己项目中去了,殊不知还有坑在里面。...()方法中可以看出,mGraphId就是布局文件中定义NavHostFragment,通过app:navGraph属性指定导航资源文件, 跟进setGraph()方法, public void...由此可见,导航资源文件nav_graph会被解析成一个NavGraph对象,看下NavGraph public class NavGraph extends NavDestination implements...定义BottomNavigationView app:menu属性指定menu资源文件中,item标签id和nav_graph中fragment标签id保持一致原因了吧,我们继续跟踪, public

2.9K30

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

导航是发生在应用目标示图之间——用户可以导航到应用当中任何位置。...File name这一栏当中输入名称,比如“nav_graph”。 ? Resource type下拉列表然后选择Navigation,点击ok就可以了。 ?...然后我们直接拖NavHostFragment 视图到我们activity文件当中 导航视图当中添加目标视图 这里总共有三种不同方式可以我们导航视图当中添加目标视图 添加已经存在目标视图 如果我们想把已经存在目标视图想要添加在导航图当中...导航到目标视图,我们需要用到NavController,它是用于管理NavHost中应用程序导航对象。...那么不同Fragment之间跳转,可能就是摆在我们面前一大难题,经常会有这样会那样问题,同时逻辑不是很清晰并且需要大量代码用来实现。

1.1K10

Jetpack:新一代导航管理Navigation

动作,这个是我们之前导航视图中配置好,会导航到SecondFragment。...注意首先通过findNavController()来获取一个NavController对象,然后调用它navigate函数即可,当然这个函数有多种重载,比如可以传递参数,如下: public void...是NavHostFragmentonCreate中创建出来,是一个NavHostController对象,它继承NavController,所以就是NavController。...除了这个,我们还可以发现当在切换页面的时候,标题栏返回按钮也会自动显示和隐藏。当导航到第二个页面SecondFragment,返回按钮显示;当回退到首页,返回按钮隐藏。...除此之外,Google还提供了Safe Args Gradle插件,该插件可以生成简单对象和构建器类,这些类支持目的地之间进行类型安全导航和参数传递

85020

Navigation深入浅出,到出神入化,再到实战改造

思考几个问题: 可以代码中用Bundle传递参数,为什么要在XML去配置 XML中参数标签,只能设置和读取,无法XML中跳转是附带传过去,如B页面要求传入name:String,于是标签中配置,但A去跳转,无法XML中传入,只能在代码中定义参数名称和值,那么XML参数还有何意义?...navigationUp和popBackStack()回退上一级时有什么区别,该如何正确使用 跳转 有时用是ActionID,有时用是FragmentID 他俩到底什么场景下,区分该将哪个传入方法作为参数...Default Value 为空默认值 更多支持参数类型: 图片.png 2.2 跳转路由动作 (Action) 图片.png ID 当前跳转动作节点唯一标识,后续代码中调用navController.navigation...bundle 设置传递参数 Options设置其他配置参数,如动画,popUpTo等,也就说,XML中配置,代码中都可实现。

55410

Navigation深入浅出,到出神入化,再到实战改造(二)

了解Navigation使用后,思考几个问题 NavHostFragmnet作为路由容器,是如何解析nav_graph资源文件,从而生成NavGraph对象? 跳转,路由是如何被执行?...,将app:navGraph="@navigation/nav_graph解析封装成NavGraph对象,里面包含nav_graph.xml中所有信息。...抛出异常。找到id对应节点,找不到抛出异常。...抛出异常 找不到对应NavDestination,抛出异常 上面就是启动首页第一个页面的导航路由过程,下面路由分到中 ActivityNavigator...抛出异常,找不到对应NavDestination,抛出异常 Navigation 优缺点 优点: 支持Activity,Fragment,Dialog跳转 safesArgs安全数据传输 允许自定义导航行为

1.9K40

后端小白 Vue 入门笔记 —— 进阶篇

父子组件之间数据交互 7. 数据交互@click 8. 消息订阅,打破父子组件信息传递约束 9. 异步请求 10. 路由: 10.1. 定义路由器 10.2....向路由组件传递值 一 10.7. 向路由组件传递值 二 10.8. 编程式路由导航 11. slot标签 12. Vuex 12.1....父子组件之间数据交互 拆分组件时候,本着多个组件共享数据放在根组件原则,于是我们把共用数据放在根组件,于此同时操作这些数据方法也被我们定义根组件,子组件想要使用这些数据,想要操作这些数据怎么办呢...像下面那样,进行组件之间数据传递 父组件中给子组件传递方法或数据 使用:强制数据绑定方法,ChildTarget 是我们 components 模块将子组件映射得来子组件标签,name 可以是...-- 这里使用插槽占位--> 父组件中使用:注意啊,下面的组件想往 MyHeader.vue 中插槽中,传递进去代码片段

2K20

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

NavController:得知切换目标,控制NavHost去显示B这个Fragment。 这么一说,你是否有一些理解了呢? 2....Fragment之间跳转并传值 平时实际开发中常常会从一个Fragment跳转到另一个Fragment,并且带一些参数过去,之前这些跳转都是比较麻烦,需要自己去写一些业务逻辑,而且还很容易出问题,...navigate,表示导航意思,这里面我传入了刚才定义nav_graph.xml中actionid。...很明显,跳过去了,不过感觉还少了点什么,因为平常Fragment之间跳转都会传递参数过去,那么这个也要传参数,而Navigation也提供了这个功能,可以通过Bundle进行传参。...底部导航栏控制Fragment切换 在上面已经添加了底部导航栏,但是这个导航栏还没有和NavHost绑定起来,所以自然就无法切换底部导航同时,改变NavHost中Fragment。

9.1K42

滴滴前端必会vue面试题汇总_2023-05-19

常见配置选项有 deep 和 immediate,对应原理如下 deep:深度监听对象,为对象每一个属性创建一个 watcher,从而确保对象每一个属性更新都会触发传入回调函数。...代码渲染到页面之前,vue会把代码转换成一个对象(虚拟 DOM)。以对象形式来描述真实DOM结构,最终渲染到页面。...,可以将无用模块“剪辑”,仅打包需要,使打包整体体积变小了 更快 主要体现在编译方面: diff算法优化 静态提升 事件监听缓存 SSR优化 更友好 vue3兼顾vue2options API同时还推出了...:声明式导航和编程方式导航 声明式导航方式使用router-link组件,添加to属性导航;编程方式导航更加灵活,可传递调用router.push(),并传递path字符串或者RouteLocationRaw.../foo/:id, /foo/1 和 /foo/2 之间跳转时候, // 由于会渲染同样 Foo 组件,因此组件实例会被复用。

81060

Android入门教程 | Fragment 基础概念

本例中,此值为 false,因为系统已将扩展布局插入 container,而传递 true 值会在最终布局中创建一个多余视图组。) 接下来,需将该片段添加到您 Activity 中。...向 FragmentTransaction 添加更改顺序无关紧要,不过: 必须最后调用 commit()。 如果要向同一容器添加多个片段,则添加片段顺序将决定它们视图层次结构中出现顺序。...Fragment 替代 TabActivity 做导航,性能更好。 Fragment 4.2.版本中新增嵌套 fragment 使用方法,能够生成更好界面效果。 3....Fragment与Activity之间是如何传值 Activity向Fragment传值: 将要传值,放到bundle对象里; Activity中创建该Fragment对象fragment, 通过调用...fragment.setArguments()传递到fragment中; 该Fragment中通过调用getArguments()得到bundle对象,就能得到里面的值。

3.5K40

Python迭代器使用详解

迭代对象分为两大类,一种是实际保存序列,即列表、元组,字符串;另一种就是我们上一节总提到“不一次性产生所有结果列表,而是可以for循环中按需一次产生一个结果对象”。...2.迭代器 我们注意到,这一小节标题中还有一个词叫做迭代器,他俩放在一起容易把人弄迷糊,他们之间关系,相信你看完下面一段介绍就会很清楚了: 2.1.迭代器与迭代对象关系 迭代对象支持内置函数iter...函数,不断依次获取元素,并在捕捉到StopIteration异常确定完成迭代,这就是完整迭代过程。...,先把迭代对象转换成迭代器,然后用next方法进行手动迭代,迭代到最后出现StopIteration异常退出。...节:函数参数传递、修改、匹配与解包过程全解析 第11节:函数闭包与装饰器用法详解 第12节:异常处理方式

71200

View Controller编程指南

ViewController可以验证来自视图输入,然后以数据对象需要格式打包输入,但是应该最小化ViewController管理实际数据中角色。...UIKit期望您以规定方式使用ViewController。 维护正确ViewController关系确保自动行为需要传递给正确ViewController。...例如,UINavigationController对象显示来自子ViewController内容以及由导航控制器管理导航栏和可选工具栏。...呈现ViewController,UIKit会在呈现ViewController和呈现ViewController之间创建一个关系,如图所示。...两个ViewController需要来回传递传递数据情况下,他们应该始终使用明确定义公共接口来实现。 代理设计模式经常用于管理ViewController之间通信。

1.2K20

HLS.js:过去,当下和未来

为了减少播放列表膨胀,一旦媒体播放列表中部分片段从 live edge 中超过 3 个目标持续时间,服务器就会将其从媒体播放列表中删除。...您可以使用新 EXT-X-PART 标记将部分片段添加到媒体播放列表中。你可以父段边界处放置其他视频段标记(如EXT-X-DISCONTINUITY)。...当客户端发出 HTTP GET 请求媒体播放列表更新,它可以添加称为传递指令特殊查询参数,以指定相应播放列表进行增量更新。然后服务器保留请求(块),直到包含该片段播放列表版本可用。...阻止播放列表重新加载,消除播放列表轮询。 预加载提示和阻塞媒体下载 全球范围内交付低延迟流,消除不必要往返至关重要。...提供报告副本 低延迟播放,客户端必须能够以最少往返次数切换格式副本,以便执行比特率自适应。为支持此功能,服务器会将主播放列表中其他格式副本报告添加到每个媒体播放列表中。

5K51

RefactoringGuru 代码异味和重构技巧总结

代码膨胀 【代码膨胀】是代码、方法和类,它们规模已经增加到了难以处理地步。通常,这些异味不会立即出现,而是随着程序演化而积累(尤其是当没有人努力根除它们时候)。...提取方法 问题:你有一个可以组合在一起代码片段。 解决方案:将此代码移动到一个单独新方法(或函数),并用对该方法调用替换旧代码。 内联函数 问题:当方法主体比方法本身更明显,请使用此技巧。...解决方案:用新算法替换实现算法方法体。 在对象间移动功能 即使你不同之间,以不太完美的方式分布了功能,仍然存在希望。...引入参数对象 问题:你方法包含一组重复参数。 解决方案:用对象替换这些参数。 移除设置方法 问题:字段值应该只创建设置,之后任何时候都不能更改。 解决方案:删除设置字段值方法。...解决方案:抛出一个异常。 用测试替换异常 问题:一个简单测试就能完成任务地方抛出异常? 解决方案:用条件测试替换异常

1.8K40

react基础

componentWillReceiveProps 组件接收到一个新 prop (更新后)被调用。这个方法初始化render不会被调用。...组件接收到新props或者state被调用。初始化时或者使用forceUpdate不被调用。 可以在你确认不需要更新组件使用。...componentWillUpdate组件接收到新props或者state但还没有render被调用。初始化时不会被调用。 componentDidUpdate 组件完成更新后立即调用。...render 事件机制 Touchable组件 设置是否监听,冒泡方式传递(html子节点向根节点传递) View.props.onStartShouldSetResponder: (evt) =...创建react项目(需要安装create-react-app,否则执行时候会出现ssl连接错误提示) react和vue react拆分html到不同对象,封装性更好,和html很难混用,vue和html

67020

copy-and-swap 是什么

问题 我发现 copy-and-swap 这个名词很多地方都出现, What are your favorite C++ Coding Style idioms: Copy-swap Copy constructor...一,防止做无用功;二,防止自赋值出现问题(看上面的代码就知道了)。但是这种检查没什么意义,因为很少出现,加上它反而徒增消耗。...如果管理多个资源,那么这里代码就会变得膨胀。(译注:这里冗余应该是指与复制构造函数代码实现有重复。)...赋值运算符(=)参数是值传递,这样可以进入函数体内部时候就已经实现内存申请和对象复制,避免了代码冗余,而无异常 swap 可以提供强异常安全保证,至于自赋值,这里就更不存在了,因为函数体内部对象完全是一个新对象...,具体可以参考, 引用传递弊端 aliasing 解释 aliasing 弊端 C++ 11 中有何变化 进入 C++ 11 时代,三法则就变为了五法则,多了 移动语义。

81810
领券