0

我正在使用最新的 Koin 版本3.1.2。我有一个基本Fragment的,它接受一个 String 参数到它的构造函数。

我的 Koin 设置如下:

活动:

override val scope: Scope by activityScope()
private val fragment by inject<MyFragment> {
    parametersOf(intent.getStringExtra(PROJECT_ID_EXTRA))
}

override fun onCreate(savedInstanceState: Bundle?) {
    setupKoinFragmentFactory(scope)
    super.onCreate(savedInstanceState)
    .
    .
}

分段:

class MyFragment(private val projectId: String?) : BaseFragment() {

}

Koin 模块:

scope<MyActivity> {
    fragment { (projectId: String) -> MyFragment(projectId) }
}

为了模拟活动重新创建,我Don't keep activities在开发人员选项中打开了标志。

重新创建活动时总是会发生什么,我得到以下异常:

Unable to start activity ComponentInfo{com.activity.MyActivity}: org.koin.core.error.InstanceCreationException: Could not create instance for [Factory:'com.fragment.MyFragment',scope:q:'com.activity.MyActivity']
Can't get injected parameter #0 from DefinitionParameters[] for type 'java.lang.String'
4

0 回答 0