12

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

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

4

4 回答 4

31

我没有测试过这段代码,但它应该可以工作:

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()和,而不是以编程方式单击 OK 按钮dismissDialog(id)。如果您需要处理多个对话框,onPositiveButtonClicked请使用id参数。

于 2013-05-07T02:59:39.913 回答
5

我想通过代码按下对话框的“确定”/肯定按钮

是的,您可以通过获取POSITIVEBUTTON 的实例然后调用performClick()它来做到这一点。试试看:

Button okButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
okButton.performClick(); //<<< click Button using code
于 2013-05-07T03:01:34.880 回答
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();
于 2018-06-19T09:21:18.740 回答
-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();
于 2013-05-07T02:58:04.517 回答