【发布时间】:2021-01-13 08:01:27
【问题描述】:
我正在尝试在使用 NavController 时将数据从目标 Fragment 的 FloatingActionButton 的 OnClickListener 传递到起始 Fragment。 FloatingActionButton 位于托管所有 Fragment 的 Activity 中。
目前,我可以像这样从 FloatingActionButton 的 OnClickListener 返回上一个 Fragment:
Bundle bundle = new Bundle();
bundle.putSerializable(BUNDLE_KEY_SELECTED, selected);
NavController navController = NavHostFragment.findNavController(FragmentSelectSongs.this);
navController.popBackStack();
我想将该 Bundle 发送到 start Fragment。这里的文档 Pass data to the start destination 说要设置一个新图形并添加 Bundle。不过,这会破坏后台堆栈。即使我这样做:
NavController navController = NavHostFragment.findNavController(FragmentSelectSongs.this);
navController.setGraph(navController.getGraph(), bundle);
navController.popBackStack();
这将我带回到起始片段。我该如何处理?
我应该从目的地做一个动作开始并传递另一个值,然后弹出两次回栈吗?
【问题讨论】:
-
如果您尝试将结果返回到已经在后台堆栈上的片段,您是否有理由不使用Navigation API for returning a result?
-
因为“在片段之间传递数据”似乎是最有可能找到答案的地方!感谢您的建议。我决定只将变量存储在主活动中,避免 Android 解决方案的麻烦。
标签: android android-fragments android-navigation-graph