android - 用 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"))
推荐阅读
- vb.net - 如何在保存在 vb.net 中时刷新数据?
- spring - 用于仇恨关系更新的 PUT 或 PATCH
- android-studio - Android Studio OnSharedPreferenceChangedListener 在 MainActivity 中不起作用
- python - python中的正方形列表
- angular - Angular Elements:即使是空的也会出现插槽
- python - TextInput 裁剪
- php - Firefox 将文件扩展名更改为“.csv.htm”。从 myapp (php/phpexcel) 下载 csv 时
- java - HIbernate突然开始验证JPA注解
- javascript - React-nvd3 在折线图上显示多条线
- css - Cloudflare 指向我的网站,但 Css 无法正常工作