2012-01-02 46 views
12

我有一個EditText。當我點擊它時,它變得可以聚焦。我將輸入要輸入到EditText中的輸入文本。我想爲EditText實現一個監聽器,這樣當我停止輸入時,它應該自動將該文本保存到數據庫中,而不是有一個按鈕。如何讓EditText的監聽器監聽輸入是否停止?爲EditText實現文本觀察器

回答

14

集的EditText imeOption

editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 

通過使用這樣的事情,

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
    @Override 
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
     if (actionId == EditorInfo.IME_ACTION_DONE) { 
      // Specify your database function here. 
      return true; 
     } 
     return false; 
    } 
}); 

或者,您可以使用OnEditorActionListener接口,以避免匿名內部類。

+0

您也可以通過返回false而不是返回true來關閉完成後關閉虛擬鍵盤。 – Youness 2017-02-05 23:16:07

38

試試這個。

EditText et = (EditText)findViewById(R.id.editText); 
Log.e("TextWatcherTest", "Set text xyz"); 
et.setText("xyz"); 

et.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { } 
    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { } 
    @Override 
    public void afterTextChanged(Editable s) { 
     Log.e("TextWatcherTest", "afterTextChanged:\t" +s.toString()); 
    } 
}); 
+0

這應該是正確的答案。 – 2016-05-21 06:10:38

4

添加到您的EDITTEXT

et1.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      // TODO Auto-generated method stub 
     } 

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

      // TODO Auto-generated method stub 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 

      // TODO Auto-generated method stub 
     } 
    });