android - 在kotlin中回压时出现对话框,内存泄漏?
问题描述
我想在单击一次后退按钮时发出警报对话框,但发生了错误。搜索错误,我发现我必须使用dismiss()。所以我做了但没有工作。你能让我知道这个问题吗?这是错误日志。
E/WindowManager: android.view.WindowLeaked: Activity com.jakchang.hwahae.Activity.MainActivity has leaked window DecorView@85feca8[MainActivity] that was originally added here
at android.view.ViewRootImpl.<init>(ViewRootImpl.java:701)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:365)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
at android.app.Dialog.show(Dialog.java:470)
at com.jakchang.hwahae.Activity.MainActivity.exitDialog(MainActivity.kt:183)
at com.jakchang.hwahae.Activity.MainActivity.onBackPressed(MainActivity.kt:167)
at android.app.Activity.onKeyUp(Activity.java:3168)
at android.view.KeyEvent.dispatch(KeyEvent.java:3374)
at android.app.Activity.dispatchKeyEvent(Activity.java:3451)
at androidx.core.app.ComponentActivity.superDispatchKeyEvent(ComponentActivity.java:115)
at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:84)
at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:133)
at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:535)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59)
blabla~
override fun onBackPressed() {
super.onBackPressed()
exitDialog()
}
private fun exitDialog() {
val builder = AlertDialog.Builder(this)
builder.setMessage("Close?")
builder.setPositiveButton("YES") {dialog, id ->
finish()
}
builder.setNegativeButton("NO") {dialog, id ->
dialog.dismiss()
}
builder.create().show()
//builder.show()
}
解决方案
你应该在 super.onBackPressed() 之前调用 exitDialog() 函数。您所做的是在 exitDialog() 之前调用 super.onBackPressed() ,这意味着您的活动不再存在。请更改为我发布的代码。
覆盖乐趣 onBackPressed() { exitDialog() }
private fun exitDialog() {
val builder = AlertDialog.Builder(this)
builder.setMessage("Close?")
builder.setPositiveButton("YES") {dialog, id ->
super.onBackPressed()
}
builder.setNegativeButton("NO") {dialog, id ->
dialog.dismiss()
}
builder.create().show()
//builder.show()
}
推荐阅读
- python - 特定时间戳和前几秒的子集df - python
- google-chrome - 在 chrome devtool 中看不到 jsessionid?
- html - 为什么 maxlength warnigClass 徽章显示在 MODAL 后面?
- java - 屏幕锁定时无法使用 mediarecord 进行录制。试过 WakeLock 但没有结果
- http - 下载数据后,我可以在 HTTP 中发出错误信号吗?
- python - 在pandas python中基于开始时间和结束时间创建订单队列
- java - 发现以元素“签名”开头的无效内容。'{"http://www.w3.org/2000/09/xmldsig#":Signature}' 之一是预期的
- java - 使用 RNG 的 Arraylist 冒泡排序
- typescript - 打字稿类:如何初始化需要多个承诺的变量?
- haskell - Haskell 中的代数数据类型