首页 > 解决方案 > 如何从 Kotlin 的片段中传递上下文?

问题描述

你如何将Context一个正在运行的片段传递给另一个类?我需要从中获取资源数据,但由于某种原因,当我通过参数发送它时它似乎为空。

class BeatBoxFragment : Fragment() {
...
    var mBeatBox: BeatBox = BeatBox(this.context!!)
...
}

我将使用这个片段的上下文来访问活动中的资产。

class BeatBox(context: Context) {
...
    val mAssets: AssetManager = context.getAssets()
...
}

如果我尝试使用参数调用 BeatBox,程序会崩溃this.context!!.显然它为空(根据我的堆栈跟踪建议:android.beatbox.BeatBoxActivity}:kotlin.KotlinNullPointerException“)

任何帮助是极大的赞赏。

标签: androidkotlin

解决方案


使用requireContext()which 确保 Fragment 已附加并返回一个有效的非空上下文,我们可以毫无问题地使用它。

您也可以使用不依赖于生命周期applicationContext的访问assetActivity


推荐阅读