getActivity(kotlin:活动)给我FragmentActivity。但是现在,对于特定的侦听器,我需要使用Activity而不是FragmentActivity,并且无法将其强制转换为Activity。
答案 0 :(得分:4)
FragmentActivity
类扩展了Activity
类。
因此,如果需要Activity
,那么您始终可以简单地传递对FragmentActivity
的引用。
如果您的代码仍然不起作用,那么这不是问题。如果是这样,您需要发布更多信息,以便我们为您提供帮助。
答案 1 :(得分:1)
使用
(activity as AppCompatActivity)
或
requireActivity() //to getActivity
requireContext() //to getContext
答案 2 :(得分:0)
只需确保您传递FragmentActivity
而不传递FragmentActivity?
或在参数中使其可选。我将解释原因,这里是一个示例:
// call somewhere in Fragment
myFunc(activity)
方法:
fun myFunc(activity: Activity?) {
// doing smth
}
我们将Activity?
设置为可选,因为片段类是Java类,而Kotlin假定它可能为null。 (碎片使对活动的引用保持为可空)因此这就是为什么您有Type mismatch
异常的原因。
答案 3 :(得分:0)
对于其他任何人都可能有此问题。 只需添加! (活动!)
答案 4 :(得分:0)
你可以用
activity as Activity
或
activity!!
答案 5 :(得分:0)
通过requireActivity()
。
正如 Moonbloom 指出的那样FragmentActivity
是一个Activity
。
如果您仔细查看您的错误,您会发现问题在于您在函数需要 not null FragmentActivity?
时传递了 Activity
。