Проверка формы сарипаара не работает второй раз в Котлине
Я использую сарипаар для проверки формы. У меня есть некоторый текст редактирования во фрагменте A, при успешной проверке вид переключится на фрагмент B.
Масляный нож и сарипаар аннотация в фрагменте.
@NotEmpty
@BindView(R.id.nameEditText)
lateinit var nameEditText: EditText
Сарипаар инициализация:
val validator = Validator(this)
validator.setValidationListener(this)
Чтобы проверить поля:
validator.validate()
Валидация работает нормально в первый раз. Когда вы возвращаетесь из фрагмента B во фрагмент A, проверка не работает, она напрямую вызывает проверку правильности.
На onValidationSucceeded я использую следующую функцию для переключения на фрагмент B.
fun openFragment(fragment: Fragment) {
val ft = activity.supportFragmentManager.beginTransaction()
ft.replace(R.id.container, fragment)
ft.addToBackStack(null)
ft.commitAllowingStateLoss()
}
Эта проблема появляется только в kotlin, но не в Java.
1 ответ
Я решил проблему, у меня есть вся инициализация saripaar в basefragment, у меня есть следующий код в basefragment с нулевой проверкой для экземпляра валидатора:
if(validator==null){
validator = Validator(this)
validator.setValidationListener(this)
}
Поскольку я удалил нулевую часть проверки, теперь она работает нормально.
validator = Validator(this)
validator.setValidationListener(this)