android - 如何在使用导航架构时将数据传递给第一个片段?
问题描述
我正在尝试使用 NavHostFragment 将一组对象实例从我的主要活动传递到其他片段链中的第一个片段。我已经尝试了各种方法,但是一旦到达第一个片段,捆绑包似乎总是为空。
这是我启动 NavHostFragment 的方式(frameContainer 是我的布局 xml 中的 Frame Container 元素)
NavHostFragment navHost = NavHostFragment.create(R.navigation.claim_nav_graph);
getSupportFragmentManager().beginTransaction()
.replace(R.id.frameContainer, navHost)
.setPrimaryNavigationFragment(navHost)
.commit();
文档说有 2 个不同的.create函数,其中一个您可以将第二个参数作为包传递给其中一个,但 Android Studio 不允许我使用此版本。
有没有人有任何想法?
提前致谢!
解决方案
这似乎确实是一个缺陷NavHostFragment
,将数据向下传递到第一个片段似乎是不可能的,因为Bundle
您可以设置为create
函数的第二个参数在此过程中被覆盖。
最后,我通过在活动的第一个片段中构建捆绑包来解决这个问题。我能够使用以下内容访问活动意图属性。
// Kotlin
activity.intent?.extras?.getBundle(KEY_BUNDLE_ID)
// Java
getActivity().getIntent().getBundleExtra(KEY_BUNDLE_ID)
在这种情况下,这对我来说已经足够了,但如果可能的话,那就太好了
推荐阅读
- laravel - 记录大数据我收到内存限制错误
- java - 转置一个图(二维数组),其中 graph[i].length = i 的度数
- python - 为什么 sympy.solve 以分段和恒定条件返回结果?
- javascript - 在Javascript中将基于其他数组值的数组填充到所需的数字
- powershell - Powershell中的Out-File不写入文件
- qt - 我可以制作的最简单的网格文件是什么?
- reactjs - 在 React.js 中悬停和删除项目
- c# - 在 C# 中使用 FluentMail 从属性渲染 Html 代码
- regex - 如何grep匹配行与积极的前瞻?
- python - 使用 numpy 函数 unique() 从我的数据框“data_re”中访问每列的所有唯一数据类型