Tam*_*arG 14 android textwatcher android-edittext
我构建了一个Android应用程序.我有一个EditText.我想在用户更改文本后自动保存更改(或其他任何内容).现在我用
editText.addTextChangedListener(textWatcher);
Run Code Online (Sandbox Code Playgroud)
和
TextWatcher textWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
...
}
Run Code Online (Sandbox Code Playgroud)
但是它会在每次微小的更改后保存更改(添加\删除一个字母),我希望它只在用户完成后才能保存(关闭键盘,点击不同的编辑文本等).我怎样才能做到这一点?
Pan*_*mar 22
实施onFocusChange的setOnFocusChangeListener,并有一个为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
}
}
});
Run Code Online (Sandbox Code Playgroud)
实现setOnFocusChangeListener所有EditTexts,你也应该处理Back Press事件.如果用户更改了edittext的数据并且未转到另一个EditText并按下则编辑后的vallue将无法保存.所以应该使用onKeyDown或者onBackPressed也可以
由于 Kotlin 现在是官方 Android 语言:
var editText = findViewById<EditText>(R.id.editText)
editText.onFocusChangeListener = OnFocusChangeListener { _, hasFocus ->
if (!hasFocus) {
//SAVE THE DATA
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16296 次 |
| 最近记录: |