Androidアプリケーションを作成します。EditTextがあります。ユーザーがテキストを変更した後、変更(またはその他)を自動的に保存したいのですが、今は
editText.addTextChangedListener(textWatcher);
そして
TextWatcher textWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
...
}
ただし、小さな変更(文字の追加/削除)ごとに変更が保存されるため、ユーザーが終了した後(キーボードを閉じたり、別の編集テキストをクリックしたりするなど)にのみ保存する必要があります。どうやってやるの?
onFocusChange
のsetOnFocusChangeListener
を実装すると、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
も使用する必要があります
Kotlinが公式になりましたAndroid言語:
var editText = findViewById<EditText>(R.id.editText)
editText.onFocusChangeListener = OnFocusChangeListener { _, hasFocus ->
if (!hasFocus) {
//SAVE THE DATA
}
}