单击刷新列表时 Kotlin 应用程序崩溃
Kotlin app crash when list refreshed on click
我制作了一个 Android 应用程序,它使用带有适配器的自定义列表视图、刷新按钮和每行的 onlick 事件。
我的问题是第一次加载列表时一切正常,但是当我点击刷新然后我点击随机行时应用程序崩溃并出现以下错误:
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
在 onlick 事件中,我有一个带有 4 个按钮的自定义对话框,错误在最后一行 (builder.create().show())。
rowView.setOnClickListener {
val builder = AlertDialog.Builder(context)
builder.setTitle(context.getString(R.string.alert_commands_desc) + " " + recipe.valve)
builder.setItems(
arrayOf<CharSequence>(context.getString(R.string.open_valve_button),
context.getString(R.string.close_valve_button),
context.getString(R.string.deny_command_button),
context.getString(R.string.close))
) { dialog, which ->
when (which) {
0 -> sendValveCommand("AV", recipe.id, context)
1 -> sendValveCommand("CV", recipe.id, context)
2 -> sendValveCommand("AC", recipe.id, context)
3 -> dialog.dismiss()
}
}
builder.create().show()
}
这是适配器部分:
if (json.has("Apparati_Controllo")) {
val controlElementList = json.getJSONArray("Apparati_Controllo")
val recipeList = ControlElement.populateRecipe(controlElementList)
val adapter = ControlElementAdapter(thisContext, recipeList)
listView.adapter = adapter
}
我试过清除适配器、列表、更改上下文,但没有任何效果...
非常感谢,如果您需要更多代码,请告诉我。
对于需要显示的任何视图,我从不喜欢使用 this
或 getApllicationContext()
。而是使用这个:
this@MyActivityName //in kotlin
MyActivityName.this //in java
同时将此添加到您的 AndroidManifest.xml
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
我制作了一个 Android 应用程序,它使用带有适配器的自定义列表视图、刷新按钮和每行的 onlick 事件。 我的问题是第一次加载列表时一切正常,但是当我点击刷新然后我点击随机行时应用程序崩溃并出现以下错误:
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
在 onlick 事件中,我有一个带有 4 个按钮的自定义对话框,错误在最后一行 (builder.create().show())。
rowView.setOnClickListener {
val builder = AlertDialog.Builder(context)
builder.setTitle(context.getString(R.string.alert_commands_desc) + " " + recipe.valve)
builder.setItems(
arrayOf<CharSequence>(context.getString(R.string.open_valve_button),
context.getString(R.string.close_valve_button),
context.getString(R.string.deny_command_button),
context.getString(R.string.close))
) { dialog, which ->
when (which) {
0 -> sendValveCommand("AV", recipe.id, context)
1 -> sendValveCommand("CV", recipe.id, context)
2 -> sendValveCommand("AC", recipe.id, context)
3 -> dialog.dismiss()
}
}
builder.create().show()
}
这是适配器部分:
if (json.has("Apparati_Controllo")) {
val controlElementList = json.getJSONArray("Apparati_Controllo")
val recipeList = ControlElement.populateRecipe(controlElementList)
val adapter = ControlElementAdapter(thisContext, recipeList)
listView.adapter = adapter
}
我试过清除适配器、列表、更改上下文,但没有任何效果... 非常感谢,如果您需要更多代码,请告诉我。
对于需要显示的任何视图,我从不喜欢使用 this
或 getApllicationContext()
。而是使用这个:
this@MyActivityName //in kotlin
MyActivityName.this //in java
同时将此添加到您的 AndroidManifest.xml
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>