首页 > 解决方案 > 如何从 Kotlin 中的静态上下文访问 Android 应用程序资源(即字符串)?

问题描述

我想从没有上下文的源文件中的 xml 文件中读取字符串。理想情况下,我想做这样的事情:如何从静态上下文中获取资源内容?

但是我不知道如何将其转换为 Kotlin。

标签: androidkotlin

解决方案


基本上是一样的。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 发生泄漏。


推荐阅读