如何通过viewModels进行数据绑定

问题描述

我尝试使用viewModel扩展库对片段中的数据进行绑定的代码,但是在编译时发生的错误表明series1 = Sequential() series1.add(TimeDistributed(Conv1D(3,2,activation='relu',padding='same',input_shape=(n_steps,n_features)))) series1.add(TimeDistributed(MaxPooling1D(pool_size=2,padding='valid',strides=2))) series1.add(TimeDistributed(Flatten())) series2 = Sequential() series2.add(TimeDistributed(Conv1D(3,n_features)))) series2.add(TimeDistributed(MaxPooling1D(pool_size=2,strides=2))) series2.add(TimeDistributed(Flatten())) series3 = Sequential() series3.add(TimeDistributed(Conv1D(3,n_features)))) series3.add(TimeDistributed(MaxPooling1D(pool_size=2,strides=2))) series3.add(TimeDistributed(Flatten())) merged = Concatenate([series1,series2,series3]) final_model=Sequential() final_model.add(merged) final_model.add(SimpleRNN(5,return_sequences=True)) final_model.add(SimpleRNN(3)) output= Dense(1170)(final_model) model= Model(inputs=[series1,series3],outputs=output) 方法无法以常规绑定方式使用。

by viewModels()

错误。

// the library androidx.lifecycle:lifecycle-viewmodel-ktx

import androidx.fragment.app.viewModels

class MyFragment : Fragment() {

    private val viewModel: MyViewModel by viewModels()  // I can use viewModelFactory to set the binding. But when change to this way,it can not be compile correctly.

    override fun onCreateView(
        inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?
    ): View? {
        val binding = FragmentMyBinding.inflate(inflater)
        binding.lifecycleOwner = this
        binding.viewModel = viewModel
    ...
}

解决方法

onCreateView函数的返回视图应该是数据绑定生成的类的根视图。

尝试使用此代码

class MyFragment: Fragment() {

private val viewModel: MyViewModel by viewModels()
lateinit var binding: FragmentMyBinding

override fun onCreateView(
    inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?
): View? {
    binding = DataBindingUtil.inflate(inflater,R.layout.fragment_layout,container,false)
    return binding.root
}


override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)

    binding.viewModel = viewModel

}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...