gpt4 book ai didi

android - setFragmentResult 在单击监听器上不起作用

转载 作者:行者123 更新时间:2023-12-04 23:39:28 28 4
gpt4 key购买 nike

您好,我的问题如下,我有 2 个 fragment ,一个使用 SetFragmentResultListener 接收,另一个使用 setFragmentResult 发送
问题是 setFragmentResult 在 OnClickListener 内部不起作用,但在外部起作用
家长

 setFragmentResultListener("scannedCode") { requestKey, bundle ->
val result = bundle.getString("code")
Log.i("MYLOG-find","$result")
}
child - 它工作
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_scan, container, false)

setFragmentResult("scannedCode", bundleOf("code" to "pedro"))

return view
}
child - 它不起作用
 override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
val view = inflater.inflate(R.layout.fragment_scan, container, false)

view.textView2.setOnClickListener {
setFragmentResult("scannedCode", bundleOf("code" to "pedro"))
}

return view
}

最佳答案

根据@ianhanniballake 的回答,我走得更远了,因为我遇到了类似的问题,并阅读了他提到的文档(特别是 Receive results in the host activity 部分)。进行 fragment 间通信(父子)的关键之一是使用 Activity 的supportFragmentManager。进行信息交换的方法。例子:

  • 父 fragment (宿主)

  • requireActivity().supportFragmentManager
    .setFragmentResultListener("whatever_id_you_use", viewLifecycleOwner) {
    // Your code for listener
    }
  • 子 fragment :

  • requireActivity().supportFragmentManager
    .setFragmentResult("whatever_id_you_use", bundle_with_results)
    "whatever_id_you_use"是文档中描述的 requestKey,它是 Activity 在为其结果分配监听器时将查找的索引。这样做应该使监听器与生命周期保持同步,同时简化自己的监听器的实现。

    关于android - setFragmentResult 在单击监听器上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66248802/

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