android - 导航架构组件 - 将参数数据传递给 startDestination
问题描述
我有一个活动 A 启动活动 B 传递给它一些意图数据。活动 B 托管来自新导航架构组件的导航图。我想将该意图数据作为参数传递给 startDestination 片段,该怎么做?
解决方案
TLDR:您必须手动扩充图表,将键/值添加到 defaultArgs,然后将图表设置在navController
.
步骤1
该文档告诉您在您的布局中的<fragment>
标签中设置图形。Activity
就像是:
<fragment
android:id="@+id/navFragment"
android:name="androidx.navigation.fragment.NavHostFragment"
app:graph="@navigation/nav_whatever"
app:defaultNavHost="true"
/>
删除设置graph=
.
第2步
在将显示您的 Activity 中,NavHostFragment
像这样膨胀图表:
val navHostFragment = navFragment as NavHostFragment
val inflater = navHostFragment.navController.navInflater
val graph = inflater.inflate(R.navigation.nav_whatever)
navFragment
如上所述,您在 XML 中为片段提供的 id在哪里。
第 3 步 [关键!]
创建一个包来保存要传递给startDestination
片段的参数并将其添加到图形的默认参数中:
val bundle = Bundle()
// ...add keys and values
graph.addDefaultArguments(bundle)
第4步
在主机上设置图表navController
:
navHostFragment.navController.graph = graph
推荐阅读
- javascript - document.getElementByClassName 无法使用父类获取子元素的值
- python - Webscrape - 不同长度的字段
- java - 输入错误时循环?
- java - 编写程序以使用嵌套循环打印以下模式
- node.js - MongoDB 聚合:FieldPath 可能不以 $ 开头
- husky - husky pre-commit yarn/npm 测试对键盘输入没有反应
- angular - 如何将 api 密钥与发布请求一起传递
- javascript - 如何从 Javascript 库插入 MYSQL
- javascript - 如果嵌套数组不存在,则插入嵌套数组
- javascript - 在 setTimeout 完成之前不出现 Jest 测试 JavaScript 代码元素