如何解决用koin检索片段
我的项目有多个模块,我正在使用koin。我有home
模块中的HomeActivity和功能模块中的AskQuestionFragment。我需要在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!
。
出于测试目的,我试图进行更改
factory (named("askFragment")) { AskQuestionFragment() }
为factory (named("askFragment")) { 74521647256142765412 }
它运行良好,所以我认为koin不支持片段注入
如何解决?
解决方法
您的问题是您试图注入子类型“ Fragment”,但您的bean定义是针对类“ AskQuestionFragment”的。
像这样更改您的声明:
private val fragmentAsk by inject<AskQuestionFragment>(named("askFragment"))
或者,您可以像这样声明您的类型:
private val fragmentAsk: AskQuestionFragment by inject(named("askFragment"))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。