android - 如何使用 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)
解决方案
推荐阅读
- ruby-on-rails - Rails 属于_to class_name 参数允许
- c# - WPF C# 为 Screen.AllScreens 创建一个数组并在列表框中显示所有值
- python - 突出显示打印语句中的子字符串
- c# - 为什么子窗体不与父窗体出现在同一屏幕上?
- opencv - 标准化照明条件以进行图像识别
- javascript - 如何创建一些导出的 Axios 实例的多个实例?
- android - 将元素(尤其是右上角)修复到 chrome mobile 中的可视视口,内容非常广泛?
- sql-server - 如何修复 Azure 分析服务器的 Active Directory 身份验证中的“无法获取身份验证令牌”
- swift - DispatchQueue.global.async 中的代码是串行执行的吗?
- azure - 删除原始 Azure SQL Server 后通过 Portal 恢复 Azure SQL Database LTR 备份