Проверка формы сарипаара не работает второй раз в Котлине

Я использую сарипаар для проверки формы. У меня есть некоторый текст редактирования во фрагменте 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) 
Другие вопросы по тегам