我正在使用最新的 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'