Home 안드로이드 Unable to add window 오류
Post
Cancel

안드로이드 Unable to add window 오류

문제 상황

안드로이드에서 Dialog를 사용하던 도중 Unable to add window – token null is not valid; is your activity running?라는 메시지가 발생하며 앱이 강제 종료되게 되었다

문제 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
val dialog = Dialog(baseContext)
dialog.setContentView(R.layout.webview_dialog)
dialog.window?.setBackgroundDrawableResource(R.drawable.dialog_background)
val windowWidth = resources.displayMetrics.widthPixels * 0.9
val windowHeight = resources.displayMetrics.heightPixels * 0.7
dialog.window?.setLayout(windowWidth.toInt(), windowHeight.toInt())

val ok = dialog.findViewById<CheckBox>(R.id.yes_button)
val x = dialog.findViewById<CheckBox>(R.id.no_button)
val webView = dialog.findViewById<WebView>(R.id.webview)

webView.loadUrl("https://sch10719.neocities.org/codingvocaprivacypolicy")

ok.setOnClickListener {
    dialog.dismiss()
    consentCheckBox2.isChecked = true
}

x.setOnClickListener {
    dialog.dismiss()
    consentCheckBox2.isChecked = false
}

dialog.show()

해결법

해당 코드에서 발생한 문제를 해결하기 위해 여러 시도를 하던 끝에 해결 방법을 찾게 되었는데 해당 오류가 발생하는 원인은 바로 val dialog = Dialog(baseContext) 부분에 context를 baseContext로 준 것이 문제로

1
2
3
4
val dialog = Dialog(this@AgreementActivity)
dialog.setContentView(R.layout.webview_dialog)
// 코드 생략
dialog.show()

위 코드에서 Dialog에 baseContext가 아닌 this@액티비티 이름으로 바꿔서 넣은 뒤 다시 앱을 실행하면 위 오류 메시지가 뜨지 않고 잘 실행되는 것을 볼 수 있다

This post is licensed under CC BY 4.0 by the author.