Как проверить, был ли изменен EditText или нет?

Мне нужно знать, был ли изменен параметр EditText, а не был ли введен пользователем какой-либо текст в поле, но был изменен только if String.

Ответы

Ответ 1

Вам нужно TextWatcher

Смотрите здесь в действии:

EditText text = (EditText) findViewById(R.id.YOUR_ID);
text.addTextChangedListener(textWatcher);


private TextWatcher textWatcher = new TextWatcher() {

  public void afterTextChanged(Editable s) {
  }

  public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  }

  public void onTextChanged(CharSequence s, int start, int before,
          int count) {

  }
}

Ответ 2

Если вы передумали слушать нажатия клавиш, вы можете использовать OnKeyListener

    EditText et = (EditText) findViewById(R.id.search_box); 

    et.setOnKeyListener(new View.OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            //key listening stuff
            return false;
        }
    });

Но ответ Йоге - это то, что вам нужно.

Ответ 3

Внедрите TextWatcher. Он дает три метода: beforeTextChanged, onTextChanged и afterTextChanged. Последний метод не следует вызывать до тех пор, пока что-то не изменится, так что хорошо использовать его.

Ответ 4

Это действительно сработало для меня

EditText text = (EditText) findViewById(R.id.YOUR_ID);

text.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

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

        if(your_string.equals(String.valueOf(s))) {
           //do something
        }else{
            //do something 
        }
    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});