我构建了一个Android应用程序。我有一个EditText。我想在用户更改文本后自动保存更改(或其他任何内容)。 现在我用
editText.addTextChangedListener(textWatcher);
和
TextWatcher textWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
...
}
但它会在每次小改动后保存更改(添加\删除一个字母),我希望它只在用户完成后才能保存(关闭键盘,点击不同的编辑文本等)。 我怎么能这样做?
答案 0 :(得分:20)
实施onFocusChange
的{{1}},并为hasFocus提供布尔参数。如果这是错误的,您将焦点丢失到另一个控件,您应该保存editext的数据。例如
setOnFocusChangeListener
为所有EditTexts实施 EditText editText= (EditText) findViewById(R.id.editText);
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus) {
//SAVE THE DATA
}
}
});
,您也应该处理setOnFocusChangeListener
事件。如果用户更改了edittext的数据并且没有转到另一个EditText并按下则编辑后的vallue将无法保存。因此,也应使用Back Press
或onKeyDown
答案 1 :(得分:1)
由于Kotlin现在是官方的android语言:
var editText = findViewById<EditText>(R.id.editText)
editText.onFocusChangeListener = OnFocusChangeListener { _, hasFocus ->
if (!hasFocus) {
//SAVE THE DATA
}
}