我的alertDialogBuilder
类型为AlertDialog.Builder
。这有两个按钮,一个是正面,另一个是负面。单击肯定按钮时,我会进行条件检查,如果成功,则只有alertDialogBuilder
应该关闭,否则android应用程序应该继续显示它。这可能吗?
当前代码
EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle("test");
alertDialogBuilder.setMessage("testMessage");
alertDialogBuilder.setCancelable(false);
editText = new EditText(this);
editText.setText("hi");
alertDialogBuilder.setView(editText);
editText.requestFocus();
alertDialogBuilder.setNegativeButton("Cancel", dialogLinstener);
alertDialogBuilder.setPositiveButton("Save", dialogLinstener);
alertDialogBuilder.show();
}
private DialogInterface.OnClickListener dialogLinstener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(which == DialogInterface.BUTTON_POSITIVE) {
String str = editText.getText().toString();
if(!str.equals("hi")) {
// do something..
} else {
// do something else..
}
} else if (which == DialogInterface.BUTTON_NEGATIVE) {
//do nothing.
}
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null)
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
return;
}
};
答案 0 :(得分:1)
保留对AlertDialog
创建的AlertDialog.Builder
的引用。然后,您可以根据需要显示或取消AlertDialog
。
AlertDialog dialog = alertDialogBuilder.create();
dialog.show();
然后在其他地方:
dialog.dismiss();
答案 1 :(得分:0)
如果您的意思是不自动关闭AlertDialog.Builder ,那么在外面点击时不应该关闭,那么您可以执行以下操作: -
dialog.setCanceledOnTouchOutside(false);
如果您只想在满足条件时关闭对话框,请保留对AlertDialog
所创建的AlertDialog.Builder
的引用,因为@Ascorbin正确地说明了您的情况
if(condition == true){
//code
dialog.dismiss();
}
这种方式对话框只有在满足条件时才会关闭。