如何使用导航体系结构组件safeargs将参数传递给对话框片段? 下面是我目前的实现方式
开始片段
val navController = findNavController()
val action =
QuestionListFragmentDirections.actionQuestionListFragmentToCustomDialogFragment(args.templateFlag)
navController.navigate(
action
)
目标片段
args.templateFlage //supposed to return a boolean value
//but throws java.lang.IllegalStateException: Fragment QuestionTypeDialogFragment{e8be5e1}
(47b305ea-35b2-49e0-b378-d31a08ba9a41) QuestionTypeDialogFragment} has null arguments
答案 0 :(得分:2)
也许你在片段得到它之前使用了args。例如,我在代码中更改了它:
private val args by navArgs<RadioDetailFragmentArgs>()
private val stations = args.stations.toList()
与
private val args by navArgs<RadioDetailFragmentArgs>()
private val stations by lazy {
args.stations.toList()
}
它有效
答案 1 :(得分:0)
您必须在XML参数导航声明中添加android:defaultValue="@null"
,例如:
<argument
android:name="ArgName"
android:defaultValue="@null"
app:argType="boolean"
app:nullable="true" />
答案 2 :(得分:0)
您可以通过捆绑发送参数,而不是发送指导。
val bundle = Bundle()
bundle.putBoolean("templateFlag", args.templateFlag)
findNavController().navigate(
R.id.action_QuestionListFragment_to_CustomDialogFragment,
bundle
)