目前,我已经使用 setSingleChoiceItems
、setPositiveButton
和 setNegativeButton
在警报对话框中创建了更改语言。如果单击 setNegativeButton
,如何防止语言更改?
private fun showChangeLanguageDialog() {
val listItems = arrayOf(getString(R.string.english), getString(R.string.chinese))
val mBuilder = AlertDialog.Builder(this@LoginActivity)
mBuilder.setTitle(getString(R.string.choose_language))
mBuilder.setCancelable(false)
mBuilder.setSingleChoiceItems(listItems, -1) { dialogInterface, i ->
when (i) {
0 -> {
setLocale("en")
}
1 -> {
setLocale("zh")
}
}}.setPositiveButton(getString(R.string.button_ok)) { dialogInterface, i ->
recreate()
dialogInterface.dismiss()
}.setNegativeButton(getString(R.string.button_no)) { dialogInterface, i -> }
val mDialog = mBuilder.create()
mDialog.show()
}
现在 setPositiveButton
工作正常,我将 setCancelable
设置为 false,那么如何实现 setNegativeButton
?谢谢
最佳答案
这是因为您总是在选择以下代码中的每个项目时设置语言:
mBuilder.setSingleChoiceItems(listItems, -1) { dialogInterface, i ->
when (i) {
0 -> {
setLocale("en")
}
1 -> {
setLocale("zh")
}
}}
因此,只有在单击肯定按钮时才需要设置语言环境。这可以通过为您的语言环境使用临时变量来实现。像这样:
private fun showChangeLanguageDialog() {
...
val temporaryLocale = ""
mBuilder.setSingleChoiceItems(listItems, -1) { dialogInterface, i ->
when (i) {
0 -> {
temporaryLocale = "en"
}
1 -> {
temporaryLocale = "zh"
}
}}.setPositiveButton(getString(R.string.button_ok)) { dialogInterface, i ->
setLocale(temporaryLocale)
recreate()
dialogInterface.dismiss()
}.setNegativeButton(getString(R.string.button_no)) { dialogInterface, i -> }
val mDialog = mBuilder.create()
mDialog.show()
}
注意:代码尚未测试。
关于Android alertdialog 如何在我从单选项目中选择项目后防止否定按钮确认操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54643011/