java.lang.IllegalStateException:指定的子项已具有父项。必须先在对话框中对孩子的父项调用 removeView()



我有一个显示自定义对话框的方法

fun showDialog(){
val resultsDialog = Dialog(this)
resultsDialog.setContentView(dialogBinding.root)
dialogBinding.tvDialogCategory.text = CategoryType.HISTORY.name
dialogBinding.tvDialogSetMeetMinimumCriteria.text =displayResultString
resultsDialog.create()
resultsDialog.show()
}

但是,当我在Activity代码中进行一些验证后再次调用该方法时,

myButton.setOnClickListener{
//some validation code here
showDialog()

}

我得到错误:illegalstateexception:指定的子节点已经有父节点。你必须首先在子元素的父元素上调用removeView()

我已经尝试了各种方法来解决这个问题,但都无法做到。如何解决这个问题?谢谢。

将结果对话框放入全局变量

class YourActivity : BaseActivity(){  
lateinit var resultsDialog

然后将显示对话框分解为2个方法,一个用于初始化对话框,另一个用于显示对话框

fun initDialog(){
resultsDialog = Dialog(this)
resultsDialog.setContentView(dialogBinding.root)
dialogBinding.tvDialogCategory.text = CategoryType.HISTORY.name
dialogBinding.tvDialogSetMeetMinimumCriteria.text =displayResultString
resultsDialog.create()
}
fun showDialog(){
resultsDialog.show()
}

之后,在oncreate方法上只调用initDialog()一次,在myButton clicklistener上调用showDialog()

相关内容

  • 没有找到相关文章

最新更新