我有一个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()
}
}
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
}
})