web-dev-qa-db-ja.com

Android-EditTextでテキストが変更された*後に*何かをする

Androidアプリケーションを作成します。EditTextがあります。ユーザーがテキストを変更した後、変更(またはその他)を自動的に保存したいのですが、今は

editText.addTextChangedListener(textWatcher);

そして

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

ただし、小さな変更(文字の追加/削除)ごとに変更が保存されるため、ユーザーが終了した後(キーボードを閉じたり、別の編集テキストをクリックしたりするなど)にのみ保存する必要があります。どうやってやるの?

14
TamarG

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 
            }  

        }
    });

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

22
Pankaj Kumar

Kotlinが公式になりましたAndroid言語:

var editText = findViewById<EditText>(R.id.editText) 

editText.onFocusChangeListener = OnFocusChangeListener { _, hasFocus ->
        if (!hasFocus) { 
           //SAVE THE DATA       
        }
}
0
SkorpEN