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



我正在使用Kotlin Android Extensions:的视图绑定

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

您可以在回调中检查片段是否仍添加到其主机活动中

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

然而,更好的解决方案是将业务逻辑转移到视图模型中。

最新更新