我有一个显示自定义对话框的方法
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()