如何检查EditText是否被更改?

我需要知道EditText是否被更改,而不是用户是否在字段中input了一些文本,但只有if string被更改。

Solutions Collecting From Web of "如何检查EditText是否被更改?"

你需要一个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) { } } 

如果你改变主意听按键,你可以使用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; } }); 

但是Johe的回答是你需要的。

实现一个TextWatcher 。 它提供了三种方法, beforeTextChangedonTextChangedafterTextChanged 。 最后的方法不应该被调用,直到有些东西改变,所以这是一个好东西使用它。

这实际上为我工作

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