2017-08-27 64 views
0

如何在每次关闭后重新显示相同的对话框? 我的代码(在科特林):解散后重新显示对话框

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中了。

+0

怎么样不允许解雇,而不是重新打开它?你可以使用show()我打赌 – creativecreatorormaybenot

回答

0

试试这个:

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() 
} 
1

最简单的方法是可能记得显示对话的功能,如:

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() 
     } 
    } 
+0

崩溃的应用程序和堆栈跟踪,有消息说这个视图已经显示 – Hiosdra