android - 如何从 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“)
任何帮助是极大的赞赏。
解决方案
使用requireContext()
which 确保 Fragment 已附加并返回一个有效的非空上下文,我们可以毫无问题地使用它。
您也可以使用不依赖于生命周期applicationContext
的访问asset
Activity
推荐阅读
- python - 如何每次创建一个唯一的字母数字 id 并确保它不存在于我使用 python 的现有列表中?
- android - SharedElementTransition 可以交互吗?
- c# - 如何使用 Appium 自动化在 android 模拟器中单击应用程序菜单按钮的事件?
- solr - 精确表达或单词 solr 匹配
- javascript - 如何使用 Vue 指令防止链接或按钮中的点击事件
- oracle - Oracle EBS 12.2.4 与 ADF 的集成
- django - 在 django 中获取 m2m 字段(通过模型)列表
- javascript - Redux 形式,VALUES 来自哪里?
- react-native - React Native - 似乎没有调用函数
- python - 从列表中检测异常值