使用 Koin 时无法通过显式意图启动活动(Koincontext 已启动)
Posted
技术标签:
【中文标题】使用 Koin 时无法通过显式意图启动活动(Koincontext 已启动)【英文标题】:Cannot start activity via explicit intent while using Koin (Koincontext already started) 【发布时间】: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。 【参考方案1】:试试这个
private fun setListeners()
btnLogout.setOnClickListener
firebaseAuth.getInstance().signOut()
activity?.finish()
val intent = Intent(this, LoginActivity::class.java)
startActivity((intent))
【讨论】:
不幸的是不起作用。它不会将片段识别为“此”目的的上下文 尝试添加this@LoginActivity
并回答是否不应该使用 Kotlin。每当我需要开始一项新活动时,我都会在我的项目中使用意图。以上是关于使用 Koin 时无法通过显式意图启动活动(Koincontext 已启动)的主要内容,如果未能解决你的问题,请参考以下文章
KoinAppAlreadyStartedException:一个 Koin 应用程序已经启动
ActivityNotFoundException 意图 + 小部件