为什么我的警报对话框第二次崩溃使我的应用程序崩溃?

时间:2019-01-04 03:03:49

标签: android kotlin

当用户单击具有正确游戏答案的按钮时,我将调用一个警报对话框。第一次调用该警报时,屏幕上的警报就很好显示,但是,如果用户第二次获得正确的答案,则应用程序将崩溃并告诉我“ 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()
    }

我只希望警报根据需要显示多次,而不会导致应用程序崩溃

1 个答案:

答案 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()
    }