Kotlin android-如何在ankocomponent中观察viewmodel
我想在anko组件中使用viewmodelproviders 我在google开发者指南上研究了viewmodel文档,但是这个特定的用例没有文档记录Kotlin android-如何在ankocomponent中观察viewmodel,kotlin,fragment,viewmodel,anko,anko-component,Kotlin,Fragment,Viewmodel,Anko,Anko Component,我想在anko组件中使用viewmodelproviders 我在google开发者指南上研究了viewmodel文档,但是这个特定的用例没有文档记录 class BroadcastCalendarFragment: Fragment() { lateinit var mBroadcastModel: BroadcastModel override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
class BroadcastCalendarFragment: Fragment()
{
lateinit var mBroadcastModel: BroadcastModel
override fun onCreateView(inflater: LayoutInflater, container:
ViewGroup?, savedInstanceState: Bundle?): View? {
return BroadcastCalendarUI<Fragment>().createView(AnkoContext.create(ctx, this))
}
}
class BroadcastCalendarUI<BroadcastCalendarFragment>(): AnkoComponent<BroadcastCalendarFragment>
{
lateinit var broadcastModel: BroadcastModel
override fun createView(ui: AnkoContext<BroadcastCalendarFragment>): View = with(ui) {
verticalLayout{
button.setOnclickListener{
broadcastModel = ViewModelProviders.of(BroadcastCalendarFragment()).get(BroadcastModel::class.java)
}
}
}
}
class-Fragment:Fragment()
{
lateinit var mBroadcastModel:BroadcastModel
覆盖创建视图(充气机:布局充气机,容器:
ViewGroup?,savedInstanceState:Bundle?:视图{
return BroadcastCalendarUI().createView(AnkoContext.create(ctx,this))
}
}
类BroadcastCalendarUI():AnkoComponent
{
lateinit var广播模型:广播模型
覆盖趣味createView(ui:AnkoContext):视图=使用(ui){
垂直布局{
button.setOnclickListener{
broadcastModel=ViewModelProviders.of(BroadcastCalendarFragment()).get(broadcastModel::class.java)
}
}
}
}
如果我点击按钮,就会出现一个错误
java.lang.IllegalStateException:无法为分离的片段创建ViewModelProvider
(它在我使用ViewModelProviders(单击侦听器中的BroadcastCalendarFragment())的那一行出现)
正在创建新的BroadcastCalendarFragment
并尝试从中查找/创建viewmodel。问题是此新片段未附加到任何活动,因此ViewModelProviders
无法找到合适的提供程序
您应该能够使用找到apropiate片段实例
ViewModelProviders.of(owner).get(BroadcastModel::class.java)
ViewModelProviders.of(owner).get(BroadcastModel::class.java)