2015-03-06 6 views
0

У меня есть EditText внутри AlertDialog. Я хотел бы, чтобы диалог отклонялся всякий раз, когда слово «стоп» обнаруживается в EditText. Я пытался дозвониться dismiss() в диалоге, но он не работает:Отклонить диалог, основанный на значении editText

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

Любая идея, чтобы исправить это?

ответ

2

Диалог 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(); 
+0

Спасибо, что отлично работает сейчас, я должен был подумать об этом =) – 3kt