首页 > 解决方案 > 如何使用 DBHelper 从片段类中检索模型类的数据?

问题描述

我尝试在片段中显示用户的个人信息,但遇到此错误。

这是数据模型类:

//A data model class with required fields.

@Keep
@Parcelize
data class User(
    val userId: String = "",
    val fullName: String = "",
    val email: String = "",
    @ServerTimestamp
    val dateRegistered: Date = Date()
) : Parcelable

我在片段中的乐趣(我在 DBHelper 中称之为乐趣):

 private lateinit var modelUser: User

 fun successProfileDetailsFromFirestore(user: User) {

    modelUser = user
    binding.apply {

        textViewNameValue.text = modelUser.fullName
        textViewEmailValue.text = modelUser.email
        textViewDateRegisteredValue.text = 
        Constants.DATE_FORMAT.format(modelUser.dateRegistered)
    }

}

我的 dbHelper 文件(我在 signInActivity 中称之为乐趣)。从 FireStore 数据库获取记录的用户详细信息的函数:

fun getUserDetails(activity: Activity) {

    // Here we pass the collection name from which we wants the data.
    dbFirestore.collection(Constants.COLLECTION_USERS)
        // The document id to get the Fields of user.
        .document(getCurrentUserID())
        .get()
        .addOnSuccessListener { document ->

            // Here we have received the document snapshot which is converted into the User Data model object.
            val user = document.toObject(User::class.java)!!
            settingsFragment.successProfileDetailsFromFirestore(user)
          
            when (activity) {
            // Call a function of base activity for transferring the result to it.
                    activity.userLoggedInSuccess()
                }
              
            }
        }
        .addOnFailureListener { }
}

之后我有这个错误:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myApp, PID: 26367
java.lang.NullPointerException
    at com.myApp.SettingsFragment.getBinding(SettingsFragment.kt:27)
    at com.myApp.SettingsFragment.successProfileDetailsFromFirestore(SettingsFragment.kt:58)
    at com.myApp.database.DBHelper.getUserDetails$lambda-2(DBHelper.kt:94)
    at com.myApp.database.DBHelper.lambda$0boddd8ULIEqNjDjzqKOq3lWihk(Unknown Source:0)

标签: androidfirebasekotlingoogle-cloud-firestorenullpointerexception

解决方案


推荐阅读