我如何获得Activity而不是FragmentActivty?

时间:2018-10-16 12:03:44

标签: android android-fragments android-activity android-fragmentactivity

片段中的

getActivity(kotlin:活动)给我FragmentActivity。但是现在,对于特定的侦听器,我需要使用Activity而不是FragmentActivity,并且无法将其强制转换为Activity。

6 个答案:

答案 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