android - 当 alertdialog 的 setcancelable 为 false 时不工作 onbackpressed

标签 android kotlin android-alertdialog back onbackpressed

我有一个 AlertDialog 及其 setCancelable()是假的。在 Onbackpressed函数我希望关闭 AlertDialog。但是当setCancelable()是假的,后退键根本不起作用。我应该怎么做才能摆脱这个问题?我不想改变 setCancelable()为真,因为我会有另一个问题。

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

最佳答案

只需添加一个 onKeyListener 并取消返回键事件的对话框。

    lateinit var dialog: AlertDialog

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        dialog = AlertDialog.Builder(this).setMessage("Check your internet connection")
                .setPositiveButton("OK") { _, _ ->
                    Toast.makeText(this, "OK", Toast.LENGTH_LONG).show()
                }.setCancelable(false)
                .create()
        dialog.show()

        dialog.setOnKeyListener { _, keyCode, _ ->
            if(keyCode == KeyEvent.KEYCODE_BACK) {
                if(dialog.isShowing) {
                    dialog.dismiss()
                }
            }
            true
        }
    }

关于android - 当 alertdialog 的 setcancelable 为 false 时不工作 onbackpressed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60462748/

相关文章:

android - 无法更改抽屉导航切换图标

java - AlertDialog 上的 android-setAdapter 不工作

android - 如何使 Android 搜索栏顺利移动?

android - 在搜索请求中使用 Intent 比使用事件监听器启动有优势吗?

Android 信标库 Eddystone 遥测。温度

java - 使用 ViewPager2 在 AlertDialog 中自定义 TabLayout

android - 如何更改 AlertDialog 中列表项的文本颜色

java - Android如何检查php消息以验证登录

android - 如何将显式 API 模式应用于除 app 模块之外的所有模块?

android - 如何使用 lambda 而不是 kotlin 接口(interface)