导航:startDestination中的包为空

时间:2020-05-01 01:00:20

标签: android android-fragments bundle android-architecture-navigation android-navigation

我有HomeFragment,其中包括RecyclerView。当我单击一个项目时,我想从navigation/home_navigation.xml中的HomeFragment转到另一个navigation/dictionary_navigation.xml中的DictionaryFragment,其中DictionaryFragment是 startDestination

我创建了一个嵌套navigation/dictionary_navigation.xml图的新操作,因为我需要打开startDestination:

Nested graph

我不知道如何将我的数据正确传输到 DictionaryFragment ,但这是

HomeFragment

wordPackAdapter = PackAdapter(context, Utils.dictionaryPacks) {
    val bundle = Bundle().apply {
        putInt("packId", it.index)
    }
    navigate(R.id.action_homeFragment_to_dictionary_navigation, bundle)
}

DictionaryFragment

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    val bundle = requireActivity().intent.extras <---- null
}

扩展名

fun BaseFragment.navigate(
    resId: Int,
    bundle: Bundle? = null,
    navOptions: NavOptions? = null
) {
    NavHostFragment.findNavController(this).navigate(resId, bundle, navOptions)
}

不起作用,因为 bundle为空

我也使用SafeArgs插件,但据我所知,我不能将 DictionaryFragmentArgs.fromBundle()与startDestination一起使用。

如何正确执行此操作?

1 个答案:

答案 0 :(得分:2)

我猜在DictionaryFragment上,您应该尝试使用“ getArguments()”来获取数据。