gpt4 book ai didi

android - 将数据从底部工作表对话框 fragment 传递到 fragment

转载 作者:行者123 更新时间:2023-12-04 00:20:08 25 4
gpt4 key购买 nike

我正在使用带有导航架构组件的 BottomSheetDialogFragment 类。我遵循单一 Activity 模式,因此我只有一个 Activity 和几个 fragment 。下面是我的代码。

BottomSheetDialogFragment.kt

class LogoBottomSheetFragment : BottomSheetDialogFragment() {

private var _binding: FragmentBottomSheetAccountLogoBinding? = null
private val binding get() = _binding!!

override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentBottomSheetAccountLogoBinding.inflate(inflater, container, false)

return binding.root
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
}

这就是我如何从我的主要 fragment 中打开我的 navigation.xml 中的对话框:
    <dialog
android:id="@+id/logoBottomSheetFragment"
android:name="com.th3pl4gu3.locky.ui.main.add.account.LogoBottomSheetFragment"
android:label="LogoBottomSheetFragment"
tools:layout="@layout/fragment_bottom_sheet_account_logo" />

现在我想将底部工作表中的数据传递到主要 fragment 。

有没有合适的方法来做到这一点?有人可以帮帮我吗。

谢谢你。

最佳答案

截至Navigation 2.3.0-alpha02 , Navigation 已内置支持 Returning a result到之前的目的地。

这分为两部分,您的第一个 fragment (想要接收结果的 fragment )将使用 navController.currentBackStackEntry?.savedStateHandle获取对 SavedStateHandle 的引用与其NavBackStackEntry 相关联在导航 Controller 中。然后,它可以observe每当该键更改时获取回调的特定键。

第二个 fragment (传递结果的 fragment ,即您的 LogoBottomSheetFragment )将获得对完全相同的 SavedStateHandle 的引用通过使用 navController.previousBackStackEntry?.savedStateHandle .当第二个 fragment 调用 setSavedStateHandle ,然后该结果可用于第一个 fragment 。

注意有一些 DialogFragment specific considerations要记住 - 因为前一个 fragment 是 RESUMED即使 BottomSheetFragment正在显示,结果将立即发送到您的第一个 fragment 。

关于android - 将数据从底部工作表对话框 fragment 传递到 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61307669/

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