2013-06-20 52 views
13

我構建了一個android應用程序。我有一個EditText。我想在用戶更改文本後自動保存更改(或其他任何內容)。 現在我用Android - 在EditText中更改*文字後做些什麼*

editText.addTextChangedListener(textWatcher); 

TextWatcher textWatcher = new TextWatcher() { 
    public void afterTextChanged(Editable s) { 
    ... 
    } 

也可節省每一個小小的變化(添加\刪除一個字母)後的變化,我想,它只會在用戶完成後保存(關閉鍵盤,點擊不同的edittext等)。 我該怎麼做?

+2

如何lostFocus? –

回答

15

執行onFocusChangesetOnFocusChangeListener,hasFocus有一個布爾參數。當這是錯誤的,你已經失去了焦點到另一個控制,你應該保存editext的數據。例如

EditText editText= (EditText) findViewById(R.id.editText); 

editText.setOnFocusChangeListener(new OnFocusChangeListener() {   

     public void onFocusChange(View v, boolean hasFocus) { 
      if(!hasFocus) { 
       //SAVE THE DATA 
      } 

     } 
    }); 

實現setOnFocusChangeListener所有EditTexts,你應該也處理Back Press事件。如果用戶更改edittext的數據,但沒有轉到另一個EditText並按下,那麼編輯後的vallue將不會保存。所以應該使用onKeyDownonBackPressed

+0

看起來不錯,但是我可以檢查文字是否已更改?我可以結合TextWatcher和FocusChangeListener嗎? – TamarG

+0

是的,你可以將兩者結合起來。並減少數據保存操作的次數。 –

+0

你能告訴我如何?在onFocusChange中放入editText.addTextChangedListener?把editText.setOnFocusChangeListener放在afterTextChanged中? – TamarG