我一直在寻找可以广泛帮助我的代码的答案,但是我发现的解决方案对我不起作用。
我收到以下错误:
kotlin.TypeCastException: null cannot be cast to non-null
type kotlin.collections.Map<kotlin.String, kotlin.Any>
FATAL EXCEPTION: main
Process: com.meetHitch.HitchApp, PID: 4021
kotlin.TypeCastException: null cannot be cast to non-null
type kotlin.collections.Map<kotlin.String, kotlin.Any>
at ... helpers.RestAPIKt$getUserProfile$1 ...
at com.google.android.gms.tasks.zzj.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main ...
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$Method...
at com.android.internal.os.ZygoteInit.main
我的代码如下:
private val TAG: String
get() = "RestAPI"
private val fUser: FirebaseUser?
get() = FirebaseAuth.getInstance().currentUser
private val uid: String?
get() = fUser?.uid
private val baseDoc: DocumentReference
get() = FirebaseFirestore.getInstance().
collection("users").document(uid!!)
private val leadsDoc: DocumentReference
get() {
appUser.currentConference?.id?.let {
return baseDoc.collection("leads").document(it)
}
return baseDoc.collection("leads").document(demoID)
}
private val conferencesCollection: CollectionReference
get() = FirebaseFirestore.getInstance().
collection("conferences")
fun getUserProfile(callback: (AppUser) -> Unit) {
// Source can be CACHE, SERVER, or DEFAULT.
val source = Source.DEFAULT
baseDoc.get(source)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
val document = task.result
if (document != null) {
printnLog(TAG, "Loaded profile for User
with UID: $uid successfully!")
val user = AppUser(task.result.data as
Map<String, Any>)
callback(user)
} else {
println("No profile set. Saving initial
profile...")
appUser = AppUser(fUser!!)
setUserProfile()
}
} else {
Log.w(TAG, "getUser:onCancelled",
task.exception)
}
}
}
我已经提到了kotlin.TypeCastException: null cannot be cast to non-null type com.midsizemango.databasekotlin.Note,但是可能没有执行任何解决方案,但是没有解决方案吗?在正确的地方。我尝试了“ as?Map”,但出现类型不匹配错误。
答案 0 :(得分:4)
在第val user = AppUser(task.result.data as Map<String, Any>)
行,将Any
变量设为可空:
val user = AppUser(task.result.data as Map<String, Any?>)