Android 如何将数据从目标片段传递到起始片段';s浮动操作按钮';使用导航控制器时,是否单击侦听器?

Android 如何将数据从目标片段传递到起始片段';s浮动操作按钮';使用导航控制器时,是否单击侦听器?,android,android-fragments,android-navigation-graph,Android,Android Fragments,Android Navigation Graph,我试图在使用NavController时将数据从目标片段的FloatingActionButton的OnClickListener传递到开始片段。FloatingActionButton位于承载所有片段的活动中 目前,我可以从FloatingActionButton的OnClickListener返回到前面的片段,如下所示: Bundle bundle = new Bundle(); bundle.putSerializable(B

我试图在使用NavController时将数据从目标片段的FloatingActionButton的OnClickListener传递到开始片段。FloatingActionButton位于承载所有片段的活动中

目前,我可以从FloatingActionButton的OnClickListener返回到前面的片段,如下所示:

                Bundle bundle = new Bundle();
                bundle.putSerializable(BUNDLE_KEY_SELECTED, selected);
                NavController navController = NavHostFragment.findNavController(FragmentSelectSongs.this);
                navController.popBackStack();

我想把这个包发送到起始片段。这里的文档,比如说设置一个新的图形并添加捆绑包。但这破坏了后盾。即使我这样做:

                NavController navController = NavHostFragment.findNavController(FragmentSelectSongs.this);
                navController.setGraph(navController.getGraph(), bundle);
                navController.popBackStack();
这让我回到起始片段。我该怎么处理

我是否应该从目的地开始执行一个操作并传递另一个值,然后弹出后退两次?

您尝试过这个吗

navController.navigate(R.id.fragment_id_to_send_bundle, bundle);

赞成。由于必需的参数没有默认值,我得到了一个IllegalArgumentException。问题是,当我为参数提供默认值时,由safeargs生成的actionFragmentAToFragmentB()方法将变成一个具有0个参数的方法,并且在需要时我无法再传递参数。有没有一种方法可以用navigateTo()传递参数?我想出来了,但是有没有存储参数字符串值的地方?我现在使用的是硬编码值。navigateTo()确实有效。不过,它确实为后退增加了一个额外的步骤,所以我希望弹出堆栈两次可以解决这个问题。它成功了!我必须使用navigate(R.id.fragment\u id\u to\u send\u bundle,bundle)而不是navigateTo(R.id.fragment\u id\u to\u send\u bundle,bundle),并确保向bundle添加所需的参数。哦,很抱歉,我没有检查方法名称,但我确定它是这样的。更新了我的回答注意:对于安全Args生成的类,具有默认值的参数创建
set
方法-您应该执行
actionFragmentAToFragmentB()似乎是最有可能找到答案的地方!谢谢你的建议。我决定只将变量存储在主活动中,避免Android解决方案带来的麻烦。