16

我创建了一个 AlertDialog

AlertDialog.Builder builder = new AlertDialog.Builder(this);
...
AlertDialog alert = builder.create();
alert.show();

片刻之后,我想更改 AlertDialog 消息而不关闭它。

可能吗?

4

4 回答 4

15

同意安卓开发者。你也可以使用

TextView messageView = (TextView) alert.findViewById(android.R.id.message);

获得对 AlertDialog 的 messageTextView 的控制。然后你可以在那里设置新的文本。

于 2013-04-19T13:47:19.130 回答
11

使用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();
         }
      }
于 2017-02-09T12:35:57.787 回答
7

是的你可以。

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

于 2013-04-19T13:39:20.797 回答
2

像这样从主设置器中设置OnClickListener :

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity())
                        .setTitle(getResources().getString(R.string.dialog_title))
                        .setMessage("Waiting ...")
                        .setNeutralButton(R.string.check, null);

AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();

Button b_neutral = alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL);
b_neutral.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        TextView tv_message = (TextView) alertDialog.findViewById(android.R.id.message);
                        tv_message.setText("Works ...");
    }
});
于 2016-08-18T08:22:53.977 回答