刷新或更改AlertDialog消息

Med*_*bes 12 android android-alertdialog

我创建了一个AlertDialog

AlertDialog.Builder builder = new AlertDialog.Builder(this);
...
AlertDialog alert = builder.create();
alert.show();
Run Code Online (Sandbox Code Playgroud)

过了一会儿,我想更改AlertDialog消息而不关闭它.

可能吗?

sti*_*ike 12

同意Android开发人员.你也可以使用

TextView messageView = (TextView) alert.findViewById(android.R.id.message);
Run Code Online (Sandbox Code Playgroud)

要控制AlertDialog的messageTextView.然后你可以在那里设置新文本.

  • 这不起作用.@ Danger的答案是正确的,它更好,只需使用alert.setMessage()而不是builder.setMessage(). (2认同)

Dan*_*ger 10

alert.setMessage()而不是builder.setMessage().调用alert.setMessage()并随时设置对话框的消息.

例:

     AlertDialog.Builder dialogBuilder;
     AlertDialog alertDialog;

     @Override
     protected void onCreate(Bundle savedInstanceState)
     {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

       dialogBuilder = new AlertDialog.Builder(MainActivity.this);
       alertDialog = dialogBuilder.create();
     }


     public void showAlert(int caller) {
       if(alertDialog != null && !alertDialog.isShowing()) {
        switch (caller){
            case 1:
                alertDialog.setMessage("First method call");
                break;
            case 2:
                alertDialog.setMessage("Second method call");
                break;
            case 3:
                alertDialog.setMessage("Third method call");
                break;
            }
            alertDialog.show();
         }
      }
Run Code Online (Sandbox Code Playgroud)

  • 重要的是要注意`alert.setMessage()`**将不起作用,除非**至少你首先调用他的`AlertDialog.Builder``builder.setMessage()`用``"`input(`null`输入也不起作用).这是一个已知问题,请参阅[https://issuetracker.google.com/issues/36913966 ](https://issuetracker.google.com/issues/36913966)中的问题 (3认同)

and*_*per 7

是的你可以.

例如,如果使用自己的布局创建自己的对话框,则可以为每个视图设置一个id,然后访问每个视图(例如textView)并随时设置其新文本.

  • 对我来说,这是行不通的:使用`TextView messageView =(TextView)dialog.findViewById(android.R.id.message); messageView.setText(“ MyText”);调用了dialog.show()之后,不会更改文本。 (2认同)