android null强转类型,android-kotlin.TypeCastException:无法将null强制转换为非null类型的kotlin.collections.Map...

我一直在寻找可以广泛帮助我的代码的答案,但是我发现的解决方案对我不起作用.

我收到以下错误:

kotlin.TypeCastException: null cannot be cast to non-null

type kotlin.collections.Map

FATAL EXCEPTION: main

Process: com.meetHitch.HitchApp, PID: 4021

kotlin.TypeCastException: null cannot be cast to non-null

type kotlin.collections.Map

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)

callback(user)

} else {

println("No profile set. Saving initial

profile...")

appUser = AppUser(fUser!!)

setUserProfile()

}

} else {

Log.w(TAG, "getUser:onCancelled",

task.exception)

}

}

}

解决方法:

使用val user = AppUser(task.result.data as Map< String,Any>)行,使Any变量可为空:

val user = AppUser(task.result.data as Map)

标签:kotlin,android

来源: https://codeday.me/bug/20191025/1924988.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值