使用 NavController 时如何将数据从目标 Fragment 的 FloatingActionButton 的 OnClickListener 传递到起始 Fragment?

How do you pass data to a start Fragment from a destination Fragment's FloatingActionButton's OnClickListener when using a NavController?

我试图在使用 NavController 时将数据从目标 Fragment 的 FloatingActionButton 的 OnClickListener 传递到起始 Fragment。 FloatingActionButton 位于 Activity 托管所有片段中。

目前,我可以像这样从 FloatingActionButton 的 OnClickListener return 到上一个片段:

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

不过我想将该 Bundle 发送到起始 Fragment。这里的文档 Pass data to the start destination 说要设置一个新图形并添加 Bundle。但这会破坏后台堆栈。即使我这样做:

                NavController navController = NavHostFragment.findNavController(FragmentSelectSongs.this);
                navController.setGraph(navController.getGraph(), bundle);
                navController.popBackStack();

这让我回到了开始片段。我该如何处理?

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

你试过了吗?

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