Android 每次点击更改 AlertDialog 文本

Android changing AlertDialog text on each click

我有一个消息列表,我想向用户显示这些消息。这些存储在数组中。然后我想显示一个警报,并在用户点击肯定按钮时,一条一条地浏览消息。

_msgCount 是我的 class 中的私有变量。

msgs 是局部最终变量。

我的所有日​​志记录都会发生。但信息永远不会改变。我也试过做 _alert.hide(),然后是 setMessage(),然后是 _alert.show()。

感谢您的帮助!

AlertDialog.Builder builder = new AlertDialog.Builder(this);

        _alert = builder.setTitle("Whoa there!")
               .setMessage(msgs[_msgCount])
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i)
                    {
                        Log.i("EasterHunt", "On positive click");
                        _alert.setMessage(msgs[++_msgCount]);
                    }
                })
                .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i)
                    {
                        Log.i("EasterHunt", "On negative click");
                        Toast.makeText(MapsMarkerActivity.this, R.string.nope, Toast.LENGTH_SHORT).show();
                    }
                })
                .create();



        _alert.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface dialog)
            {
                Log.i("EasterHunt", "what!");
            }
        });

您需要覆盖肯定按钮单击以禁用对话框的关闭操作。做这样的事情

...
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        // leave this empty
    }
})
...;

_alert.show(); // show the dialog before getting its button

_alert.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Log.i("EasterHunt", "On positive click");
        if (_msgCount < msgs.length - 1) {
            _alert.setMessage(msgs[++_msgCount]);    
        } else {
            // do some action
            _alert.dismiss();
        }

    }
})

不确定您是否可以更改已构建的 AlertDialog 的消息。 尝试每次创建一个新的。

 String[] msgs = new String[] { "ciao", "boh", "buh" };
  int _msgCount = 0;

  private void showDialog() {
    if (_msgCount >= msgs.length) return;

    new AlertDialog.Builder(this).setTitle("Whoa there!")
        .setMessage(msgs[_msgCount++])
        .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialogInterface, int i) {
            Log.i("EasterHunt", "On positive click");
            showDialog();
          }
        })
        .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialogInterface, int i) {
            Log.i("EasterHunt", "On negative click");
            Toast.makeText(MainActivity.this, "nope", Toast.LENGTH_SHORT).show();
          }
        })
        .show();
  }