Получить старое значение editText с TextWatcher - PullRequest
1 голос
/ 19 апреля 2019

Я хочу получить старое значение editText с помощью функции beforeTextWatcher. Проблема в том, что когда я пытался получить это старое значение, возвращаемое значение всегда равно нулю. Кто-то может мне помочь, пожалуйста

val nomTextWatcher: TextWatcher
        get() = object : TextWatcher {
            override fun afterTextChanged(s: Editable?) {

            }

            override fun beforeTextChanged(s: CharSequence?, p1: Int, p2: Int, p3: Int) {
                userUpdateSignup.setNom(s.toString())

            }

            override fun onTextChanged(s: CharSequence?, p1: Int, p2: Int, p3: Int) {
               if(!s.toString().isEmpty())                
  userUpdateSignup.setNom(s.toString())

            }
        }

1 Ответ

0 голосов
/ 19 апреля 2019

Вы не можете просто использовать TextWatcher, вы должны сохранить значение в свойствах класса, а затем проверить его самостоятельно.

private var myFieldValue : String = ""

[...]

val nomTextWatcher: TextWatcher
    get() = object : TextWatcher {
        override fun afterTextChanged(s: Editable?) {        
        }

        override fun beforeTextChanged(s: CharSequence?, p1: Int, p2: Int, p3: Int) {
           userUpdateSignup.setNom(s.toString())
        }

        override fun onTextChanged(s: CharSequence?, p1: Int, p2: Int, p3: Int) {
            // Here you can check differences or what you want
            if(!s.toString().isEmpty())                
                userUpdateSignup.setNom(s.toString())

            // After text changed, you have to store it 
            myFieldValue = s.toString()
        }
    }
...