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

Arc*_*rci 11 android dialog android-alertdialog

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

例如,我想通过代码按下对话框的"确定"/正面按钮.

Mat*_*les 29

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

AlertDialog dialog = ...
dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
Run Code Online (Sandbox Code Playgroud)

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

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

onPositiveButtonClicked()在您的活动中实施.而不是以编程方式单击"确定"按钮,您可以调用onPositiveButtonClicked()dismissDialog(id).如果需要处理多个对话框,onPositiveButtonClicked请使用id参数.

  • 如果您能够保留对该对话框的引用,则AlertDialog.Builder#show()将返回AlertDialog实例.否则,是否可以将点击逻辑移动到单独的方法?您可以只执行点击代码并关闭对话框,而不是模拟点击. (3认同)

ρяσ*_*я K 5

我想通过代码按下对话框的"确定"/正面按钮

是的,您可以通过获取POSITIVEBUTTON的实例然后调用performClick()它来实现.试试看:

Button okButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
okButton.performClick(); //<<< click Button using code
Run Code Online (Sandbox Code Playgroud)