如何通过代码在AlertDialog上单击“确定”?

时间:2013-05-07 02:53:53

标签: android dialog android-alertdialog

我在活动中使用showDialogdismissDialog来显示和销毁我的对话框。是否还有一种方法可以在当前显示的对话框上发出单击命令而不保留引用对话框的变量?

例如,我想通过代码按下对话框的“确定”/“正”按钮。

4 个答案:

答案 0 :(得分:28)

我没有测试过这段代码,但它应该有效:

AlertDialog dialog = ...
dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();

或者,如果您不想保留对对话的引用但控制其设置,则可以将点击代码提取到另一种方法中:

AlertDialog.Builder builder = ...
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
  public void onClick(DialogInterface dialog, int which) {
    onPositiveButtonClicked(); 
  }
});

并在您的活动中实施onPositiveButtonClicked()。您可以拨打onPositiveButtonClicked()dismissDialog(id),而不是以编程方式点击“确定”按钮。如果您需要处理多个对话框,请onPositiveButtonClicked获取id参数。

答案 1 :(得分:5)

  

我想通过代码

按对话框的'确定'/肯定按钮

是的,你可以通过获取POSITIVE按钮的实例然后在其上调用performClick()来实现。试试看:

Button okButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
okButton.performClick(); //<<< click Button using code

答案 2 :(得分:1)

如果您使用的是Builder,则它没有getButton()函数。你可以尝试这个

AlertDialog.Builder alBuilder = new AlertDialog.Builder(this);
alBuilder.setMessage("Test Message")
         .setPositiveButton("Yes", null)
         .setNegativeButton("No",null)
alBuilder.setCancelable(false);
AlertDialog alertDialog = alBuilder.show();

然后您可以通过以下代码

访问该按钮
alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();

答案 3 :(得分:-1)

试试这个: -

AlertDialog.Builder alBuilder = new AlertDialog.Builder(this);
        alBuilder
                .setMessage("Do you wamt to exit?")
                .setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                dialog.cancel();
                                // Write your code here for Yes
                            }
                        })
                .setNegativeButton("No",
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                dialog.cancel();
                                // Write your code here for No
                            }
                        });
        alBuilder.setCancelable(false);
        alBuilder.show();