android - 如何从 Kotlin 中的静态上下文访问 Android 应用程序资源(即字符串)?
解决方案
基本上是一样的。Kotlin 与 Java 并没有太大的不同。事实上,在 Android Studio 中将 Java 代码粘贴到 Kotlin 文件中会导致出现提示,询问您是否要转换该代码。
任何状况之下:
应用类:
class App : Application() {
companion object {
var context: Context? = null
}
override fun onCreate() {
super.onCreate()
context = this;
}
}
然后,从任何其他类:
val context = App.context
val someString = context?.resources.getString(R.string.some_string) //context is nullable so "?" is needed
记得添加
android:name=".App"
到application
您的 AndroidManifest 中的标签。如果 App 不在包的根目录中,则需要更改值以反映它的位置。
如果您需要从 Java 访问它:
App.COMPANION.getContext();
Android Studio 可能会抱怨上下文泄漏。但是,这不应该是准确的,因为只要您的应用程序正在运行,应用程序上下文就会在那里,并且一旦您的应用程序被终止(或停止),甚至没有运行的 JVM 发生泄漏。
推荐阅读
- azure - Azure API Manager ARM 模板中的 Microsoft.ApiManagement/service/diagnostics/loggers
- r - Flexdashboard Shiny - 编织后输出未显示完整输出
- python - 在遍历期间更新数据框
- file - Yii2 Kartik 文件输入多文件删除按钮
- vue.js - 如何解决el-menu-item超出元素UI范围的问题
- angular - 将动画放入 ion-menu 和 ion-menu 全身
- terraform - 使用 Terraform Cloud (VCS) 强制重新创建卷
- c# - 如何修复 Ignite 启动警告
- c# - 使用c#查询动态json
- sql - 枢轴通用表