android - 从另一个 BottomSheetDialogFragment 打开另一个 BottomSheetDialogFragment
问题描述
单击视图时,我正在打开一个BottomSheetDialogFragment
. 单击此片段中的视图时,我需要打开另一个BottomSheetDialogFragment
.
我的适配器.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 时,出现此错误:
Fragment Dialog2... 尚未附加。
我该如何解决?
解决方案
所以经过大量的试验和错误后,我发现解决方案是当我编写这样的代码时:
binding.primaryButton.setOnClickListener {
Dialog2().let {
it.show(parentFragmentManager, it.tag)
}
dismiss()
}
但是apply
我最初使用的块有什么问题?
推荐阅读
- docker - Nginx 无限重定向,使用 docker-compose 进行反向代理
- r - 在 R 中使用外部变量生成滚动预测
- node.js - npm 链接的信息保存在本地项目中的位置
- html - 如何在 Tailwind CSS 中将文本与双倍大小的图标字体图标垂直对齐?
- amazon-web-services - 如何编写Sns事件主题和sqs事件队列之间的cloudformation订阅
- javascript - React - 无法获取图片高度/宽度的实际值
- angular - 当我尝试更新我的 nativescript 项目时收到一条错误消息
- python - 如何在 Python 中将不知道的日期时间转换为 UTC 时间?
- spring - Eureka 服务器和 UnknownHostException
- r - 日期格式问题。如何将单独的月份和年份列组合成一个日期?