2013-06-20 5 views
13

私はアンドロイドアプリケーションを作成します。私はEditTextを持っています。私は、ユーザーがテキストを変更した後に自動的に変更(または何か他のもの)を保存したい。 今私はAndroid - EditTextで* after * textを変更しますか?

editText.addTextChangedListener(textWatcher); 

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

を使用する。しかし、それはどんな小さな変化(文字を削除\追加)した後、変更を保存し、私はそれだけで完成し、ユーザー後に保存されますことを望みます(キーボードを閉じ、別の編集テキストをクリックするなど)。 どうすればいいですか?

+2

lostFocusはどうですか? –

答えて

15

onFocusChangesetOnFocusChangeListenerを実装し、hasFocusのブール型パラメータがあります。これがfalseの場合、別のコントロールにフォーカスがなくなり、editextのデータを保存する必要があります。例えば

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

editText.setOnFocusChangeListener(new OnFocusChangeListener() {   

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

     } 
    }); 

はすべてEditTextsためsetOnFocusChangeListenerを実装し、あなたもBack Pressイベントを処理する必要があります。ユーザーがedittextのデータを変更し、別のEditTextに移動せずに戻ると、編集されたvallueは保存されません。だからonKeyDownまたはonBackPressedも使用する必要があります

+0

よく見えますが、テキストが変更されたかどうか確認できますか? TextWatcherとFocusChangeListenerを組み合わせることはできますか? – TamarG

+0

はい、両方を組み合わせることができます。また、データ保存動作の回数を減らすことができます。 –

+0

あなたは私に方法を教えてもらえますか? editText.addTextChangedListenerをonFocusChangeに入れますか? afterTextChangedにeditText.setOnFocusChangeListenerを挿入しますか? – TamarG

関連する問題