【发布时间】:2019-06-28 06:06:35
【问题描述】:
我有我的 miewModel,我将其注入到我的片段 throw ViewModelProviders.of(activity, viewModelFactory).get(MyViewModel::class.java)。
在第一次创建片段时工作正常,但如果我关闭片段,则会收到错误“layout must not be null”,它指向我在片段中使用的一些布局。
据我了解,发生这种情况是因为数据绑定仍然有一些指向我的片段的链接。那么如何解绑呢?
class MyFragment: Fragment(), Injectable {
@Inject
lateinit var viewModelFactory: ViewModelProvider.Factory
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
activity?.window?.changeStatusBarColor(this.requireContext(), R.color.yellow_status_bar)
val binding: MyLayoutBinding = DataBindingUtil.inflate(inflater, R.layout.my_layout, container, false)
binding.viewModel = viewModel
viewModel.addOnPropertyChangedCallback(object : Observable.OnPropertyChangedCallback() {
override fun onPropertyChanged(sender: Observable?, propertyId: Int) {
}
}
ViewModelModule:
@Binds
@IntoMap
@ViewModelKey(MyViewModel::class)
internal abstract fun bindMyViewModel(myViewModel: MyViewModel): ViewModel
【问题讨论】:
标签: android data-binding android-databinding