Android - 在EditText中更改*文本后执行某些操作*

时间:2013-06-20 07:13:55

标签: android android-edittext textwatcher

我构建了一个Android应用程序。我有一个EditText。我想在用户更改文本后自动保存更改(或其他任何内容)。 现在我用

editText.addTextChangedListener(textWatcher);

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

但它会在每次小改动后保存更改(添加\删除一个字母),我希望它只在用户完成后才能保存(关闭键盘,点击不同的编辑文本等)。 我怎么能这样做?

2 个答案:

答案 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 PressonKeyDown

答案 1 :(得分:1)

由于Kotlin现在是官方的android语言:

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

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