Android 用koin检索片段

Android 用koin检索片段,android,koin,Android,Koin,我的项目有多个模块,我正在使用koin。我有home模块中的HomeActivity和功能模块中的AskQuestionFragment。我需要在HomeActivity中显示AskQuestionFragment,所以我尝试用koin注入片段 factory (named("askFragment")) { AskQuestionFragment() } 然后在家庭活动中我写了这个 private val fragmentAsk by inject<Fragment

我的项目有多个模块,我正在使用koin。我有
home
模块中的HomeActivity和功能模块中的AskQuestionFragment。我需要在HomeActivity中显示AskQuestionFragment,所以我尝试用koin注入片段

factory (named("askFragment")) { AskQuestionFragment() }
然后在家庭活动中我写了这个

private val fragmentAsk by inject<Fragment>(named("askFragment"))
override fun onCreate(...) {
    val pagerAdapter = PagerAdapter(fragmentAsk, fragmentOther, fragmentOther2, fragmentBlablabla)
    viewPager.adapter = pagerAdapter
}
private val fragmentAsk by inject(命名为(“askFragment”))
重写onCreate(…){
val pagerAdapter=pagerAdapter(碎片任务、碎片其他、碎片其他2、碎片blabla)
viewPager.adapter=pagerAdapter
}
它给出了由以下原因引起的错误
:org.koin.core.error.NoBeanDefFoundException:找不到类的定义:'androidx.fragment.app.fragment'&限定符:'askFragment'。检查你的定义

出于测试的目的,我试图改变

factory(命名为(“askFragment”){AskQuestionFragment()}
be
factory(命名为(“askFragment”){74521647256142765412}

而且运行良好,所以我认为koin不支持碎片注入


如何解决它?

您的问题是您试图注入子类型“Fragment”,但您的bean定义是针对您的类“AskQuestionFragment”

更改您的声明如下:

private val fragmentAsk by inject<AskQuestionFragment>(named("askFragment"))

您是否在应用程序类模块列表的
startKoin{}
块中添加了模块?是的,我添加了。除了片段注入之外,所有其他注入都可以正常工作,我不能使用
AskQuestionFragment
,因为它来自其他模块。这就是我使用
片段的原因。另外,AskQuestionFragment是扩展片段(),它不应该是确定的吗?
private val fragmentAsk: AskQuestionFragment by inject(named("askFragment"))