从另一个BottomSheetDialogFragment打开另一个BottomSheetDialogFragment.



点击一个视图,我正在打开一个BottomSheetDialogFragment。在点击这个片段中的视图时,我需要打开另一个BottomSheetDialogFragment

MyAdapter.kt:

class MyAdapter : RecyclerView.Adapter<MyAdapter.ViewHolder>() {
...
var fManager: FragmentManager? = null
inner class ViewHolder(private val binding: ViewDataBinding) : RecyclerView.ViewHolder(binding.root) {
init {
binding.root.setOnClickListener {
fManager?.let { manager ->
Dialog1().apply {
show(manager, tag)
}
}
}
}
...
}
...
}

这是我的Dialog1.kt:

class Dialog1 : BottomSheetDialogFragment() {
private lateinit var binding: Dialog1Binding
override fun onCreateView(...) {...}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
binding.primaryButton.setOnClickListener {
Dialog2().apply {
show(childFragmentManager, tag)
}
dismiss()
}
}
}

在RecyclerView上,Dialog1按预期打开,但当我试图打开Dialog2时,我得到这个错误:

片段Dialog2……尚未附加

如何解决这个问题?

所以经过大量的尝试和错误,我已经找到了解决方案,当我写这样的代码:

binding.primaryButton.setOnClickListener {
Dialog2().let {
it.show(parentFragmentManager, it.tag)
}
dismiss()
}

但是我最初使用的apply块的问题是什么?

最新更新