解散后重新显示对话框

每次解雇后如何重新显示同一个对话框? 我的代码(在Kotlin):

val alertDialog = AlertDialog.Builder(this) alertDialog.setMessage(getString(R.string.alert_dialog_main_activity)) val editText = EditText(this) editText.inputType = InputType.TYPE_CLASS_PHONE alertDialog.run { setView(editText) setOnDismissListener { TODO( "Re-show dialog" } setPositiveButton("Done", { dialogInterface, i -> run { toast(editText.text.toString()) PreferenceManager.getDefaultSharedPreferences(applicationContext).edit().putInt("phoneNumber", editText.text.toString().toInt()).commit() } }) show() } 

答案也可以在Java中。

试试这个:

 AlertDialog.Builder(this).apply { setMessage(getString(R.string.alert_dialog_main_activity)) setView(editText) setOnDismissListener { if(/*TODO validate phone number*/) (it as AlertDialog).show() } setPositiveButton("Done", { dialogInterface, i -> toast(editText.text.toString()) PreferenceManager.getDefaultSharedPreferences(applicationContext).edit().putInt("phoneNumber", editText.text.toString().toInt()).commit() }) show() } 

最简单的方法可能是调用显示对话框的函数,如下所示:

  fun showDialog() { val alertDialog = AlertDialog.Builder(this) alertDialog.setMessage(getString(R.string.alert_dialog_main_activity)) val editText = EditText(this) editText.inputType = InputType.TYPE_CLASS_PHONE alertDialog.run { setView(editText) setOnDismissListener { showDialog() // recall the function } setPositiveButton("Done", { dialogInterface, i -> { toast(editText.text.toString()) PreferenceManager.getDefaultSharedPreferences(applicationContext).edit().putInt("phoneNumber", editText.text.toString().toInt()).commit() } }) show() } }