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