首页 > 解决方案 > 如何在使用导航架构时将数据传递给第一个片段?

问题描述

我正在尝试使用 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 不允许我使用此版本。

有没有人有任何想法?

提前致谢!

标签: androidnavigationfragmentbundle

解决方案


这似乎确实是一个缺陷NavHostFragment,将数据向下传递到第一个片段似乎是不可能的,因为Bundle您可以设置为create函数的第二个参数在此过程中被覆盖。

最后,我通过在活动的第一个片段中构建捆绑包来解决这个问题。我能够使用以下内容访问活动意图属性。

// Kotlin
activity.intent?.extras?.getBundle(KEY_BUNDLE_ID)
// Java
getActivity().getIntent().getBundleExtra(KEY_BUNDLE_ID)

在这种情况下,这对我来说已经足够了,但如果可能的话,那就太好了


推荐阅读