How can we access application context inside companion object in Android kotlin? I have a companion object inside an abstract class and I want to access context to read Shared Preferences, but I'm not able to get the context.

UPDATE:我在Android库中使用这些东西,而且我使用的类是抽象的

推荐答案

实际上,我在一个Android库中工作,这个类是抽象的,所以不能使用已经提出的解决方案.然而,我找到了这样做的方法.

  1. 在同伴对象内创建一个lateinit上下文字段.
abstract class MyClass {

    companion object {

        private lateinit var context: Context

        fun setContext(con: Context) {
            context=con
        }
    }
}
  1. 然后在应用程序启动后进行设置
public class WelcomeActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);

        MyClass.Companion.setContext(this);
    }
}

Kotlin相关问答推荐

调用即发即忘方法--哪个作用域?

Android Studio中的只读集合不支持操作失败的原因是什么?

在Kotlin项目中使用Free Fair AspectJ插件(使用Gradle)

Kotlin扩展函数未调用Hibernate/JPA中的重写函数

如何在Spring Boot中注册新的集合工厂

Kotlin 获取继承类的默认 hashCode 实现

在 kotlin 中使具体化字段可选

kotlin 单例异常是好是坏?

为什么我们在 kotlin 中需要 noinline?

如何从kotlin中的ArrayList中删除所有元素

内联函数导致单元测试代码覆盖率报告出错

为什么 IntelliJ Idea 无法识别我的 Spek 测试?

是否可以在 kotlin 中嵌套数据类?

作为 Kotlin 中的函数的结果,如何从 Firestore 数据库返回列表?

如何在Kotlin中创建填充空值的通用数组?

如何暂停kotlin coroutine直到收到通知

如何获取Kotlin中变量的名称?

如何使用协调器布局和行为在CardView上完成此动画?

Kotlin数据类打包

Kotlin 中内部可见性修饰符的范围