如何解决如何通过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
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。