Android:是否有可能不自动关闭AlertDialog.Builder?

时间:2014-01-19 18:59:40

标签: android android-alertdialog

我的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;
    }
};

2 个答案:

答案 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();
}

这种方式对话框只有在满足条件时才会关闭。

相关问题