I am using saripaar for form validation. I have some edittext in fragmentA, on validation success , view will be switched to fragmentB.
Butterknife and saripaar annotation in fragment.

@NotEmpty
@BindView(R.id.nameEditText)
lateinit var nameEditText: EditText

Saripaar initialization:

 val validator = Validator(this)
 validator.setValidationListener(this)

To validate the fields:

validator.validate()

验证第一次运行良好.当从FragmentB返回到Fragmenta时,验证不起作用,它将直接调用onvalidationSuccess.

On onValidationSucceeded , I am using following function to switch to fragmentB.

fun openFragment(fragment: Fragment) {
    val ft = activity.supportFragmentManager.beginTransaction()
    ft.replace(R.id.container, fragment)
    ft.addToBackStack(null)
    ft.commitAllowingStateLoss()
}

这个问题只出现在kotlin中,而不出现在java中.

推荐答案

我解决了这个问题,我将所有的saripaar初始化都放在baseffrment中,我在baseframent中有以下代码,验证器实例的判断为空:

if(validator==null){  
 validator = Validator(this) 
 validator.setValidationListener(this) 
}

As I removed the null check part, now its working fine.

validator = Validator(this) 
validator.setValidationListener(this) 

Kotlin相关问答推荐

升级使用jOOQ Gradle插件生成代码失败

我可以在kotlin/java.util.scanner中跳过分隔符而不重复吗?

Kotlin - 什么时候和什么时候不喜欢内联函数,为什么?

通过快捷键手动砍掉功能参数等

按钮无法在 Android Studio 上打开新活动

修改器的属性是什么,我需要更改以使角变圆且宽度更小?喷气背包组合

如何在 Spring Boot 3 中为内部类提供运行时提示

Kotlin 中的密封和内部有什么区别?

使用 Compose for Desktop Bundle 文件

如何从 kotlin 函数中 Select 正确的枚举值

如何有效地填充 Gradle Kotlin DSL 中的额外属性?

runBlocking 中的 deferred.await() 抛出的异常即使在被捕获后也被视为未处理

无法从 XML 访问 NavHostFragment

如何使用 gradle 脚本 Kotlin 构建文件构建可运行的 ShadowJar?

如何使用 Kotlin Coroutines 使 setOnClickListener debounce 1 秒?

使用 Paging 3 时保存并保留 LazyColumn 滚动位置

Spring Boot:更改属性占位符符号

如何在特定条件下清除jetpack数据存储数据

spring.config.location 在 Spring Boot 2.0.0 M6 上不起作用

Kotlin数据类打包