当用户单击具有正确游戏答案的按钮时,我将调用一个警报对话框。第一次调用该警报时,屏幕上的警报就很好显示,但是,如果用户第二次获得正确的答案,则应用程序将崩溃并告诉我“ java.lang.IllegalStateException:指定的孩子已经有一个父母。您必须调用首先在孩子的父母的removeView()上。”
//this is my alert
val builder = AlertDialog.Builder(this)
builder.setView(layoutInflater.inflate(R.layout.alert_layout, null))
//this is the button being clicked
btnClickMe1.setOnClickListener {
if (correctAnswer == 1) {
score++
updateUI()
builder.show()
}
updateUI()
}
我只希望警报根据需要显示多次,而不会导致应用程序崩溃
答案 0 :(得分:1)
您的AlertDialog初始化部分仅被调用一次,而您的监听器则在您每次按下该按钮时被调用。因此会导致该错误。
每次单击按钮时,都必须初始化对话框。所以解决办法是。
//this is the button being clicked
btnClickMe1.setOnClickListener {
if (correctAnswer == 1) {
val builder = AlertDialog.Builder(this)
builder.setView(layoutInflater.inflate(R.layout.alert_layout, null))
score++
updateUI()
builder.show()
}
updateUI()
}