当alertdialog的setcancelable为false时,无法正常工作

问题描述 投票:1回答:1

我有一个AlertDialog,并且其setCancelable()为假。在Onbackpressed功能中,我希望关闭AlertDialog。但是,当setCancelable()为假时,后退键根本不起作用。我应该怎么做才能摆脱这个问题?我不想将setCancelable()更改为true,因为会遇到另一个问题。

import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    lateinit var dialogBuilder: AlertDialog.Builder
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        dialogBuilder = AlertDialog.Builder(this)
        dialogBuilder.setMessage("Check your internet connection")
            .setPositiveButton("OK") { _, _ ->
                Toast.makeText(this, "OK", Toast.LENGTH_LONG).show()
            }.setCancelable(false)
            .create().show()
    }
}
kotlin android-alertdialog onbackpressed
1个回答
1
投票
dialogBuilder.setOnKeyListener(object : OnKeyListener() {
            fun onKey(dialog: DialogInterface, keyCode: Int, event: KeyEvent?): Boolean {
                if (keyCode == KeyEvent.KEYCODE_BACK) {
//if you want to cancel the dialog only
                    dialog.cancel()
                    //if you want to finish then 
                    dialog.finish()
                }
                return true
            }
        })
© www.soinside.com 2019 - 2024. All rights reserved.