gpt4 book ai didi

android - 使用 NavigationComponents 移动到新 fragment 时出错

转载 作者:行者123 更新时间:2023-12-05 00:19:24 25 4
gpt4 key购买 nike

所以,这很奇怪,我有两种方法可以从 Fragment A 到 Fragment B
第一个来自fab button click

private fun navigateToCreateTopics(){
fab_goto_topics.setOnClickListener {
findNavController().navigate(R.id.action_destination_my_topics_to_destination_create_topics)
}
}
而且我的项目有一个编辑按钮,该按钮也转到同一个 fragment ,但有一个 bundle 来编辑这些值
 val bundle = Bundle()
bundle.putBoolean("shouldEdit",true)
bundle.putParcelable("topic",topicAdapter.topicList[position])
findNavController().navigate(R.id.action_destination_my_topics_to_destination_create_topic,bundle)
现在,如果我按下 fab 按钮在没有额外内容的情况下导航到 createTopics fragment ,它将抛出此异常
Fragment CreateTopicsFragment{216b801} (69e0b0ac-1352-4daf-aa36-717c2f320cc9) id=0x7f0800ac} does not have any arguments.
而且我不知道为什么,因为我没有与工厂和生产线传递任何参数
requireArguments().let {
...
}
不应该执行,因为它检查空值并且没有参数传递
为什么会这样?

最佳答案

根据 requireArguments() documentation :

Throws IllegalStateException if no arguments were supplied to the Fragment.


您想使用 arguments如果你想要一个可以为空的 Bundle :
arguments?.let {
...
}
当然也可以关注 define destination arguments documentation并添加 defaultValue给您的 <argument>在您的目的地:
<argument
android:name="shouldEdit"
app:argType="boolean"
android:defaultValue="false" />
这将确保您始终拥有一个参数 Bundle 集和 false 、默认值或您自己的值。
这种方法在 using Safe Args 时效果特别好。 ,它将替换您的整个 let使用类型安全调用:
val args: CreateTopicsFragmentArgs by navArgs
val shouldEdit = args.shouldEdit

关于android - 使用 NavigationComponents 移动到新 fragment 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63045095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com