简体   繁体   中英

How to check if an EditText was changed or not?

我需要知道EditText是否被更改,而不是用户是否在字段中输入了一些文本,而只更改了if String

You need a TextWatcher

See it here in action:

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) {

  }
}

If you change your mind to listen to the keystrokes you can use 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;
        }
    });

But Johe's answer is what you need.

This actually worked for me

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) {

    }
});

Implement a TextWatcher . It gives you three methods, beforeTextChanged , onTextChanged , and afterTextChanged . The last method shouldn't be called until something changes anyway, so that's a good thing to use for it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM