如何检查EditText是否被更改?

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

  • 数字输入字段上的空格键事件行为?
  • 与芯片的Android AutoCompleteTextView
  • 如何使Android中的edittext滚动?
  • 禁用EditText上下文菜单
  • listview中的Android edittext失去了对notifydatachanged的调用
  • HTML.fromHtml换行消失
  • validationEditText中的电子邮件
  • 如何清除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) { } });