【问题标题】:Cannot start activity via explicit intent while using Koin (Koincontext already started)使用 Koin 时无法通过显式意图启动活动(Koincontext 已启动)
【发布时间】:2020-12-11 00:00:35
【问题描述】:

我有两个活动:MainActivity 和 LoginActivity。 MainActivity 包含一个带有帐户退出选项的片段,然后打开一个显示 LoginActivity 的意图。

我使用 Koin 作为 DI。我收到此错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{***/***.LoginActivity}: java.lang.IllegalStateException: A KoinContext is already started

对于以下代码:

    private fun setListeners(){
    btnLogout.setOnClickListener {
        firebaseAuth.getInstance().signOut()
        activity?.finish()
        val intent = Intent(context, LoginActivity::class.java)
        startActivity((intent))
    }
}

我不太确定问题出在哪里。我应该通过 Koin 注入 LoginActivity 吗?意图不应该与 Koin 一起使用吗?

【问题讨论】:

  • 活动启动代码在这种情况下并不重要。附上你初始化 Koin 的地方以及你如何将你的依赖注入到你的活动中。即使是不注入实现的空模块也可以消除问题,并用空实现模拟每个依赖项。我猜?即使使用空模块,您也会遇到崩溃,因为您在应用程序中的一个地方初始化 Koin。

标签: android kotlin dependency-injection koin


【解决方案1】:

试试这个

private fun setListeners(){
    btnLogout.setOnClickListener {
        firebaseAuth.getInstance().signOut()
        activity?.finish()
        val intent = Intent(this, LoginActivity::class.java)
        startActivity((intent))
    }
}

【讨论】:

  • 不幸的是不起作用。它不会将片段识别为“此”目的的上下文
  • 尝试添加this@LoginActivity
  • 并回答是否不应该使用 Kotlin。每当我需要开始一项新活动时,我都会在我的项目中使用意图。
猜你喜欢
  • 1970-01-01
  • 2016-10-10
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-30
相关资源
最近更新 更多