Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin android-如何在ankocomponent中观察viewmodel_Kotlin_Fragment_Viewmodel_Anko_Anko Component - Fatal编程技术网

Kotlin android-如何在ankocomponent中观察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?,

我想在anko组件中使用viewmodelproviders

我在google开发者指南上研究了viewmodel文档,但是这个特定的用例没有文档记录

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)