【问题标题】:Dismiss a dialog based on editText value根据 editText 值关闭对话框
【发布时间】:2015-05-08 16:34:18
【问题描述】:

我在AlertDialog 中有一个EditText。我希望在EditText 中检测到“停止”一词时关闭对话框。我尝试在对话框中调用dismiss(),但它不起作用:

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();

有什么办法解决这个问题吗?

【问题讨论】:

    标签: android android-alertdialog dismiss


    【解决方案1】:

    对话框popup 不是显示的对话框。您创建它,然后在调用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();
    

    【讨论】:

    • 谢谢,现在完美运行,我应该想到的 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2018-01-04
    • 2017-06-04
    相关资源
    最近更新 更多