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 = ...
但是
有一天我会忘记把 ?
没有解决fragment销毁后监听器还活着的问题
我想我想要 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
}
}
但是,更好的解决方案是将您的业务逻辑移动到视图模型。
我正在使用 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 = ...
但是
有一天我会忘记把
?
没有解决fragment销毁后监听器还活着的问题
我想我想要 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
}
}
但是,更好的解决方案是将您的业务逻辑移动到视图模型。