![](/img/trans.png)
[英]how to inject dependency outside activity or fragment in Kodein or Koin?
[英]retrieve fragment with koin
我的项目有多个模块,我正在使用 koin。 我有 HomeActivity 位于home
模块中,而 AskQuestionFragment 位于 feature 模块中。 我需要在 HomeActivity 中显示 AskQuestionFragment,所以我尝试用 koin 注入片段。
factory (named("askFragment")) { AskQuestionFragment() }
然后在 HomeActivity 我写这个
private val fragmentAsk by inject<Fragment>(named("askFragment"))
override fun onCreate(...) {
val pagerAdapter = PagerAdapter(fragmentAsk, fragmentOther, fragmentOther2, fragmentBlablabla)
viewPager.adapter = pagerAdapter
}
它给了我错误Caused by: org.koin.core.error.NoBeanDefFoundException: No definition found for class:'androidx.fragment.app.Fragment' & qualifier:'askFragment'. Check your definitions!
Caused by: org.koin.core.error.NoBeanDefFoundException: No definition found for class:'androidx.fragment.app.Fragment' & qualifier:'askFragment'. Check your definitions!
.
出于测试目的,我试图改变
factory (named("askFragment")) { AskQuestionFragment() }
成为factory (named("askFragment")) { 74521647256142765412 }
它运行良好,所以我认为 koin 不支持片段注入
如何解决?
您的问题是您正在尝试注入子类型“Fragment”,但您的 bean 定义适用于您的 class“AskQuestionFragment”。
像这样更改您的声明:
private val fragmentAsk by inject<AskQuestionFragment>(named("askFragment"))
或者,您可以像这样声明您的类型:
private val fragmentAsk: AskQuestionFragment by inject(named("askFragment"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.