【问题标题】:Kotlin is it possible to start an activity from a class? [closed]Kotlin 是否可以从课堂开始活动? [关闭]
【发布时间】:2020-02-21 11:16:13
【问题描述】:

我是 kotlin 的新手,我正在创建一个框架来处理我的所有 api 调用,问题是它没有上下文。我想在收到 api 的确定调用时开始一项活动,但我没有活动,所以我不能 Intent。 我尝试过的:

val intent = Intent(this, testActivity::class.java)
startActivity(intent)

但正是我需要上下文。 我还尝试使用伴随对象上下文创建一个全局类应用程序,但我得到一个错误Required Context found Intent。

val intent = Intent(App.context, testActivity::class.java)
startActivity(intent)

有没有办法在课堂上开始活动?或者我该怎么办?

【问题讨论】:

  • 传入上下文并使用它来启动活动
  • 好的,我会尝试,但是传递上下文是一个好习惯吗?因为它看起来不安全,而且我可能有泄漏?
  • 传递上下文是可以的,只要你不保留它的静态实例

标签: android kotlin


【解决方案1】:

创建应用程序类并创建实例。

@Synchronized
        fun getInstance(): MyApplication ? {
            return mInstance
    }

在应用程序的onCreate() 方法中初始化

override fun onCreate() {
        super.onCreate()
        mInstance = this
    }

现在在整个应用中使用实例作为上下文

MyApplication.getInstance()

【讨论】:

  • 为什么getInstance方法要同步?
【解决方案2】:

在创建 API 类的实例时,从您的活动中将 applicationContext 作为参数传递给您的 API 类。您可以通过构造函数注入来做到这一点。然后就可以使用收到的applicationContext来启动活动和服务了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多