gpt4 book ai didi

android - Kotlin 类型不匹配,需要 : x found: x?

转载 作者:行者123 更新时间:2023-11-29 15:34:54 27 4
gpt4 key购买 nike

我发现很多参数都有错误

Type mismatch
required: FragmentActivity
found: FragmentActivity?

我不确定解决此问题的最佳方法是什么。目前,我将该行包装在一个变量中?.let { statement }

meViewModel = ViewModelProviders.of((iMainActivity as Fragment).activity, vmf).get(MeViewModel::class.java) }

进入

val fragmentActivity = (iMainActivity as Fragment).activity

fragmentActivity?.let
{
meViewModel = ViewModelProviders.of(fragmentActivity, vmf).get(MeViewModel::class.java)
}

这是解决这个问题的正确方法吗

最佳答案

简短回答:是的。

这意味着编译器不确定 s.th.是 !=null。如果您确定它不为空,您还可以使用:

val fragmentActivity = (iMainActivity as Fragment).activity!!

这为您提供了 FragmentActivity 而不是 FragmentActivity? 并且您不需要 ?.let{}

请记住,这可能会抛出一个 NPE , 而

fragmentActivity?.let { fragment ->
meViewModel = ViewModelProviders.of(fragment, vmf).get(MeViewModel::class.java)
}

根本不会执行 .let{} 中的 block ,这通常比 NPE 危害小。参见 https://kotlinlang.org/docs/reference/null-safety.html了解更多。

关于android - Kotlin 类型不匹配,需要 : x found: x?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52948620/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com