Android 基于editText值关闭对话框

Android 基于editText值关闭对话框,android,android-alertdialog,dismiss,Android,Android Alertdialog,Dismiss,我有一个EditText在AlertDialog中。每当在EditText中检测到“stop”一词时,我希望该对话框被取消。我试着在对话框中调用disclose(),但不起作用: AlertDialog.Builder builder = new AlertDialog.Builder(this); final Dialog popup = builder.create(); final EditText edit = new EditText(this); edit.setGravity(Gr

我有一个
EditText
AlertDialog
中。每当在
EditText
中检测到“stop”一词时,我希望该对话框被取消。我试着在对话框中调用
disclose()
,但不起作用:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
final Dialog popup = builder.create();
final EditText edit = new EditText(this);
edit.setGravity(Gravity.CENTER);
edit.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence pRequest, int start, int before, int count) {

    }

    @Override
    public void beforeTextChanged(CharSequence pRequest, int start, int count, int after) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        String currentText = s.toString().toLowerCase();
        if (currentText.contains("stop")) {
            InputMethodManager imm = (InputMethodManager)getSystemService(
                      Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(edit.getWindowToken(), 0); // Hide keyboard
            popup.dismiss();
        }

    }

});
builder.setTitle("Value")
.setView(edit)
.show();

有没有办法解决这个问题?

对话框
弹出窗口
不是显示的对话框。您可以创建它,然后在调用
show()
时创建另一个完全不同的对话框。尝试直接在弹出窗口上调用命令:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
final Dialog popup = builder.create();
final EditText edit = new EditText(this);
edit.setGravity(Gravity.CENTER);
edit.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence pRequest, int start, int before, int count) {

    }

    @Override
    public void beforeTextChanged(CharSequence pRequest, int start, int count, int after) {

    }

    @Override
    public void afterTextChanged(Editable s) {
        String currentText = s.toString().toLowerCase();
        if (currentText.contains("stop")) {
            InputMethodManager imm = (InputMethodManager)getSystemService(
                      Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(edit.getWindowToken(), 0); // Hide keyboard
            popup.dismiss();
        }

    }

});
popup.setTitle("Value");
popup.setView(edit);
popup.show();

谢谢,现在效果很好,我应该想到这个=)