问题描述
我有一个接口(我称为FragmentParent),该接口由主要活动的视图模型实现,该接口具有一些基本功能,我希望在项目中的所有片段之间共享这些功能(例如报告错误,显示加载等)>
我正在使用导航API,因此我只有一个活动和许多子片段
此刻我要做的是:
class Mainviewmodel(app:Application) :Androidviewmodel(app),FragmentParent {
override fun showError(error:String)
override fun showLoading(show:Boolean)
.......
}
在我的模块中,我这样声明:
viewmodel{ Mainviewmodel(androidApplication()) }
当前使用它时,我必须编写如下代码:
class ChildFragment: Fragment(),KoinComponent {
val parent :FragmentParent by sharedviewmodel<Mainviewmodel>()
val vm : Childviewmodel by viewmodel<Childviewmodel> { parametersOf { parent } }
}
将我的子视图模型声明为:
class Childviewmodel(app:Application,private val parent:FragmentParent): Androidviewmodel(app) {
...
}
和我的模块文件中
viewmodel{ params-> Childviewmodel(androidApplication(),params[0] }
有没有更好的方法将共享视图模型注入koin的子视图模型中?还是我将其作为子项的参数传递给构造函数?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)