gpt4 book ai didi

android - 如何在 Dialog 中正确使用 FragmentResultListener

转载 作者:行者123 更新时间:2023-12-05 06:50:01 26 4
gpt4 key购买 nike

我有一个以 DatePickerDialog 启动 DialogFragment 的 fragment 。我想将日期传回主机 fragment 。我看到有人使用 setTargetFragment 但它已被弃用,在该函数的文档中它说使用 setFragmentResultListener,但 FragmentResultListener.onFragmentResult 函数似乎没有被调用。

我做错了什么,什么是好的约定?

宿主 fragment :

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
childFragmentManager.setFragmentResultListener(
REQUEST_DATE,
viewLifecycleOwner,
this
)
}

override fun onFragmentResult(requestKey: String, result: Bundle) {
Log.d(TAG, "Key: $requestKey, Bundle: $result")
}

对话框:

val requestKey = requireArguments().getString(
ARG_REQUEST_KEY,
""
)

val bundle = Bundle().apply {
putSerializable(requestKey, resultDate)
}

requireParentFragment().setFragmentResult(
requestKey,
bundle
)

此外,我在调用 DialogFragment.show 函数时传递了主机 fragment 的 childFragmentManager。

最佳答案

您不想调用 requireParentFragment().setFragmentResult - 这是在父 Fragment 的 FragmentManager 中设置结果。相反,您只想根据 the documentation 直接在您的 Fragment 上调用 setFragmentResult() :

val requestKey = requireArguments().getString(
ARG_REQUEST_KEY,
""
)

val bundle = Bundle().apply {
putSerializable(requestKey, resultDate)
}

setFragmentResult(
requestKey,
bundle
)

关于android - 如何在 Dialog 中正确使用 FragmentResultListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66485097/

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