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

如何使用androidx.navigation从片段中返回数据?

使用androidx.navigation从片段中返回数据的方法如下:

  1. 首先,在目标片段中定义一个请求代码(request code),用于标识返回数据的来源。可以使用一个整数常量来表示请求代码。
  2. 在源片段中,使用Navigation组件的NavController对象获取一个返回结果的LiveData对象。可以通过调用findNavController().currentBackStackEntry?.savedStateHandle来获取。
  3. 在源片段中,使用LiveData对象的observe方法监听返回结果。当LiveData对象的值发生变化时,会触发回调函数。
  4. 在目标片段中,使用Navigation组件的NavController对象创建一个返回结果的Bundle对象,并将数据放入Bundle中。
  5. 在目标片段中,使用Navigation组件的NavController对象的previousBackStackEntry属性获取源片段的BackStackEntry对象。
  6. 在目标片段中,使用BackStackEntry对象的savedStateHandle属性获取源片段的SavedStateHandle对象。
  7. 在目标片段中,使用SavedStateHandle对象的set方法将返回结果的Bundle对象设置为值。
  8. 当目标片段准备返回结果时,调用NavController对象的navigateUp方法返回到源片段。
  9. 在源片段的回调函数中,可以通过LiveData对象的getValue方法获取返回的数据。

下面是一个示例代码:

在源片段中:

代码语言:txt
复制
val navController = findNavController()
val resultLiveData = navController.currentBackStackEntry?.savedStateHandle?.getLiveData<String>("result")

resultLiveData?.observe(viewLifecycleOwner) { result ->
    // 处理返回的数据
    Log.d("TAG", "返回的数据:$result")
}

在目标片段中:

代码语言:txt
复制
val navController = findNavController()
val resultBundle = Bundle().apply {
    putString("result", "返回的数据")
}
val previousBackStackEntry = navController.previousBackStackEntry
previousBackStackEntry?.savedStateHandle?.set("result", resultBundle)

navController.navigateUp()

这样,当目标片段返回结果时,源片段的回调函数会被触发,并可以获取到返回的数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Python如何构造返回函数以及怎么使用返回函数

    Python返回函数即当一个函数的返回结果是另一个函数的时候,这样的函数就是返回函数。 下面看一个案例:根据年龄来判断是不是未成年人,然后决定能不能上网。...属于未%s,不可以上网' % (str1, str2) if m >= 18: return func1 else: return func2 上面的案例我们可以看到...,这个流程可能发生的情况有几种不一样的结果,当接收到一个年龄的时候先判断是不是大于18岁,然后还要传入两个参数给其内部函数func1和func2来返回不同的结果。...# 使用外部函数来选择返回的内部函数 res = func(int(age)) # 这里的参数用来控制函数内部如何选择返回函数,但是暂时没有返回值,是因为这里只是对内部函数进行选择,没有执行print(

    2.8K10

    如何使用DNS和SQLi数据获取数据样本

    泄露数据的方法有许多,但你是否知道可以使用DNS和SQLi数据获取数据样本?本文我将为大家介绍一些利用SQL盲注DB服务器枚举和泄露数据的技术。...我尝试使用SQLmap进行一些额外的枚举和泄露,但由于SQLmap header的原因WAF阻止了我的请求。我需要另一种方法来验证SQLi并显示可以服务器恢复数据。 ?...在之前的文章,我向大家展示了如何使用xp_dirtree通过SQLi来捕获SQL Server用户哈希值的方法。这里我尝试了相同的方法,但由于客户端防火墙上的出站过滤而失败了。...此外,在上篇文章我还引用了GracefulSecurity的文章内容,而在本文中它也将再次派上用场。 即使有出站过滤,xp_dirtree仍可用于网络泄露数据。...在下面的示例,红框的查询语句将会为我们Northwind数据返回表名。 ? 在该查询你应该已经注意到了有2个SELECT语句。

    11.5K10

    如何使用QueenSonoICMP提取数据

    工具安装 源码安装 广大研究人员可以直接使用下列命令将该项目源码克隆至本地,并安装好该工具所需的依赖组件: git clone https://github.com/ariary/QueenSono.git...ICMP包接收器-qsreceiver就是我们本地设备上的数据包监听器了。 所有的命令和工具参数都可以使用“—help”来查看。...工具使用样例1:发送包携带“ACK” 在这个例子,我们将发送一个大型文件,并查看接收到数据包之后的回复信息: 在本地设备上,运行下列命令: $ qsreceiver receive -l 0.0.0.0...“ACK” 在这个例子,我们希望在不等待回复信息的情况下发送数据: 在本地设备上,运行下列命令: $ qsreceiver receive truncated 1 -l 0.0.0.0 参数解释:...3:发送加密数据 在这个例子,我们将发送加密消息。

    2.6K20

    Excel公式技巧20: 列表返回满足多个条件的数据

    在实际工作,我们经常需要从某列返回数据,该数据对应于另一列满足一个或多个条件的数据的最大值。 如下图1所示,需要返回指定序号(列A)的最新版本(列B)对应的日期(列C)。 ?...千万不能忽略了这一要点,即如果采用以下简单方法: =INDEX(C2:C10,MATCH(MAX(IF(A2:A10=F1,B2:B10)),B2:B10,0)) 尽管此公式构造仍可以返回正确的值,但完全不能保证所有情况下都正确...原因是与条件对应的最大值不是在B2:B10,而是针对不同的序号。而且,如果该情况发生在希望返回的值之前行,则MATCH函数显然不会返回我们想要的值。...为了找到最大值在此数组的位置(而不是像方案1一样使用MATCH(MAX,…等)组合,那需要重复生成上述数组的子句),进行如下操作: 我们首先给上面数组的每个值添加一个小值。...由于数组的最小值为0.2,在数组的第7个位置,因此上述公式构造的结果为: {0;0;0;0;0;0;1;0;0;0} 获得此数组后,我们只需要从列C与该数组出现的非零条目(即1)相对应的位置返回数据即可

    8.8K10

    C#开发如何header解析数据

    在C#,当使用HttpClient类向API发送请求并接收到响应时,可以响应的Headers属性解析HTTP头部(Header)数据。...以下是一个如何HTTP响应的头部解析数据的示例:首先,确保项目中已经包含了System.Net.Http命名空间。...然后,我们检查响应是否成功(即HTTP状态码在200-299范围内),并尝试响应的Headers集合获取Content-Type和自定义的X-Custom-Header头部信息。...这是因为HTTP头部可能包含多个具有相同名称的值(尽管这在实践并不常见)。如果找到了对应的头部,则可以遍历返回的集合来访问这些值。...此外,如果需要读取响应体(例如,JSON或XML数据),可以使用response.Content.ReadAsStringAsync()或类似的方法来获取响应内容的字符串表示,然后进一步处理这些数据

    46310

    ElasticSearch 使用 Logstash MySQL 同步数据

    目的是希望将现有的数据导入到 ElasticSearch ,研究了好几种,除了写代码的方式,最简便的就是使用 Logstash 来导入数据到 ElasticSearch 中了。...因为现有的数据在 MySQL 数据,所以希望采用 logstash-input-jdbc 插件来导入数据。...在线安装网络问题 建议大家在使用 Logstash 的时候使用最新版本,如果必须用老版本在先安装 logstash-input-jdbc 插件。 本节网上摘录了一段配置,没有经过充分验证。...lowercase_column_names => true #Whether to save state or not in last_run_metadata_path #保存上次运行记录,增量提取数据使用...=> "%{id}" } } #------------------------------------end------------------------------------ 使用时请去掉此文件的注释

    3.5K42

    如何使用MultCheck静态分析结果识别恶意字节数据

    MultCheck是一款功能强大的恶意软件分析工具,广大研究人员可以直接使用该工具测试可疑目标文件是否具备恶意性,并检查目标文件是否被一个或多个反病毒引擎标记。...MultCheck易于使用,能够测试多款反病毒引擎。除此之外,该工具不仅允许我们根据实际需求进行功能扩展或自定义开发,而且还可以向其添加自定义的反病毒引擎。...接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地: git clone https://github.com/MultSec/MultCheck.git 然后切换到项目根目录下,执行go...工具配置 针对自定义扫描器的配置文件是一个JSON文件,该文件的数据结构如下所示: { "name": "AV name", "cmd": "Scan Program (with full PATH.../multcheck 我们可以使用-scanner参数指定使用不同的内置扫描器: .

    8710

    如何SharePoint Content DB查询List数据

    现在数据已经维护进了SharePoint List,那么怎么数据库中将维护的数据查询出来呢? SharePoint 的列表数据都存储在Content DB,其中最最重要的表就是[dbo]....[AllUserData],这个表的一行数据就对应SharePoint List的一条数据。下面介绍下如何Content DB查询出List数据。...User,Lookup等数据类型,则整个List的数据都可以[dbo]....SharePoint采用的删除方法都是软删除,通过设置一个标志位来表示一条数据已经被删除,所以我们只需要将删除标识tp_DeleteTransactionId=0添加到where条件,即可将未删除的数据返回...在AllUserData表使用tp_ModerationStatus字段来标识这行数据是否已经被审批通过。

    3K10

    在 Vue 如何插槽中发出数据

    我们知道使用作用域插槽可以将数据传递到插槽,但是如何插槽传回来呢? 将一个方法传递到我们的插槽,然后在插槽调用该方法。 我信无法发出事件,因为插槽与父组件共享相同的上下文(或作用域)。...emit 当一个槽与父组件共享作用域时意味着什么 插槽到祖父组件的 emit 更深入地了解如何使用方法插槽通讯回来 插槽到父级的 emit 现在看一下Parent组件的内容: // Parent.vue...插槽向祖父组件发送数据 如果要从插槽把数据发送到祖父组件,常规的方式是使用的$emit方法: // Parent.vue <button @click=...插槽发回子组件 与Child 组件通讯又如何呢?...我们知道如何数据从子节点传递到槽 // Child.vue 以及如何在作用域内的插槽中使用

    3K20

    Slice如何网络消费数据获得商机

    当市场营销人员数据经纪商处购买信息时,很多信息都陈旧不堪或者不完整。 这就是布雷迪的网购数据分析公司Slice为何如此激发人兴趣的原因所在。...由于该应用大获成功,它即将推出一项智能服务,消费者数据这一宝藏深入挖掘——这是一个储存着两百多万人在线购物习惯的数据库。 ?...“除苹果公司之外,iPhone 6上市的最大赢家是T-Mobile,该公司产生的预订在首个周末的所有订单占到了约20%,超过了该公司的市场份额,”Slice Intelligence首席数据官卡尼什卡...在众多数据,Slice的分析显示,这家婴儿护理公司的客户在预定鲜花方面的支出,大幅超过与他们实力最接近的竞争对手。...那么,对于消费者而言,除了被当作小白鼠外,使用应用程序还有什么好处呢?消费者亏了吗?“当然有好处”,出售消费者数据的初创企业DataCoup公司的首席执行官马特·霍根(Matt Hogan)肯定地说。

    1.5K70

    数据仓库如何使用索引

    本篇主要介绍如何数据仓库的关系表建立索引,注意是在关系数据的关系表,而不是SSAS数据表。...用户和产品的维度表聚集索引建立在业务键上,通过这样的索引,能强化查询速度尤其是where语句中使用了这些键的。通常where 表达式中经常会使用这个键值来查询维度数据。...通过业务键建立聚集索引可以避免锁升级(例如,行锁到表锁,意图排它到排它),因为在ETL过程如果代理键上有非聚集索引并且所有的行都被添加到文件末尾就有可能发生锁升级,如果排它锁行锁升级到表锁,那么就会引起其他读取或者...关系数据库引擎能直接索引获取数据而不需要直接访问维度数据,减少了IO提高了查询速度。 如果在维度表中有其他用于查询、排序、分组的列,也可以创建非聚集索引,就如同你在事务性数据库中一样。...开始单纯严谨彻底地评估以便在数据仓库建立索引。 总结 本篇只是简单介绍了一般数据仓库的关系数据如何建立索引,但是很多时候要根据实际请款来建立索引,甚至有时候不能使用索引。

    1.8K70

    如何用 ajax 连接mysql数据库,并且获取从中返回数据。ajax获取mysql返回数据。responseXML分别输出不同数据的方法。

    使用它,就可以无闪刷新页面,并且数据库获取实时改变的数据反馈回界面,显示出来!是不是很爽,的确。       废话不多,开讲,请注意我的代码的注释,里面详说!...,开始和服务器端进行交互 47 //同步方式下,send语句会在服务器端返回数据后才执行 48 //异步方式下,send语句会立即执行 49 xmlHttp.send...; 52 return; 53 } 54 } 55 56 57 58 //回调函数,就是刚才定义的函数,用来获取服务器文件,asp或者php或者其他返回的信息...76 //判断http的交互是否成功 77 if(xmlHttp.status==200) 78 { 79 //获取服务器端返回数据...80 var xmlDoc = xmlHttp.responseXML; 81 //这里把返回数据以XML的格式存到变量

    7.7K81

    如何单体应用拆分富数据服务

    拆分步骤对现有单体应用的逻辑分割开始:将服务行为拆分为一个单独的模块,然后把数据拆分到单独的数据。一系列动作之后,这些元素最终成为一个自治的新服务。 单体应用向较小服务的迁移是目前的主流趋势。...这个转换过程之中最难的部分,就是单体应用所持有的数据把新服务所属的数据拆分出来。如果单体应用拆分出来的逻辑部分仍然连接到同一个数据库,这种拆分无疑是比较简单的。...图 6:要使用定价功能的客户端已经迁移到新的定价服务。 步骤 6:为新服务创建数据库 这一步相对简单,单体应用的数据表中进行镜像,创建新的定价数据库。...图 8:数据同步定价数据表给新建的定价数据库。 步骤 8:让新服务使用数据库 开始之前,必须要保证所有使用定价功能的客户端迁移到新的服务上去。...图 9:指向定价数据库的定价服务。 步骤 9:单体应用删除新服务相关的逻辑和数据 这里就要从原有应用删除定价功能相关的逻辑和数据库了。

    1.3K30

    如何机器学习数据获取更多收益

    这个问题无法通过分析数据得到很好的解决,只能是通过一次次的制作数据集、搭建模型并进行仿真实验才能发现如何最好地利用数据集以及选取什么样的模型结构。  ...在这个过程,可以借鉴一些其它项目、论文和领域中的想法,或者是展开头脑风暴等。在之前的博客《如何定义你的机器学习问题》,我总结了一些框架,可供读者参考。...3.研究数据 将能够想到数据都可视化,各个角度来看收集的数据。...这些工作可以帮助你更好地了解数据,从而更好地选择、设计相应的模型。 4.训练数据样本大小  使用少量的数据样本做敏感性分析,看看实际需要多少数据,可参考博客《机器学习训练需要多少样本》。...因此,需要做到以下两点: 设计实验以了解模型性能随着样本的大小发生怎样的变化 使用统计数据来了解趋势是如何随样本大小的变化而变化的 基于以上两点才能对模型性能曲线有所了解。

    8.3K20
    领券