Kotlin 视图绑定 java.lang.IllegalStateException:视图在侦听器中不能为 null

Kotlin View Binding java.lang.IllegalStateException: view must not be null inside listener

我正在使用 Kotlin View Binding Android 扩展:

import kotlinx.android.synthetic.main.fragment_user_profile.*

我想在 片段 中显示来自 Cloud Firestore 的值:

FirebaseFirestore.getInstance()
    .collection("users")
    .document("1")
    .get()
    .addOnSuccessListener { doc ->
        my_text_view.text = doc["name"] as String
    }

如果接收到数据时仍显示片段,则有效。但是,如果用户在 收到 数据之前关闭片段(按回),它会崩溃:

java.lang.IllegalStateException: my_text_view must not be null

如何避免这种情况?


我当然可以使用 my_text_view?.text = ... 但是

我想我想要 addOnSuccessListener(Activity, OnSuccessListener) 之类的东西,但对于 Fragment 而不是 Activity

如果片段仍添加到其主机,您可以检查回调 activity,

FirebaseFirestore.getInstance()
.collection("users")
.document("1")
.get()
.addOnSuccessListener { doc ->
    if (isAdded) {
        my_text_view.text = doc["name"] as String
    }
}

但是,更好的解决方案是将您的业务逻辑移动到视图模型。