【发布时间】:2022-02-13 08:49:11
【问题描述】:
我一直在学习 developer.android.com 上的 Kotlin 课程中的 Android 基础知识,但遇到了数据绑定问题。我正在处理的project 没有提供解决方案代码,但我一直在根据之前的similar Codelab 建模我的方法。
我正在尝试在与每个布局对应的片段中初始化布局 xml 文件中声明的数据绑定变量,但是当我尝试初始化片段变量时,我收到一个错误:“分类器'EntreeMenuFragment'没有伴随对象,并且因此必须在此处初始化”。 build.Gradle 的 dataBinding 和 viewBinding 都设置为 true。
<layout
...
<data>
<variable
name="viewModel"
type="com.example.lunchtray.model.OrderViewModel" />
<variable
name="EntreeMenuFragment"
type="com.example.lunchtray.ui.order.EntreeMenuFragment" />
</data>
...
</layout>
class EntreeMenuFragment : Fragment() {
private var _binding: FragmentEntreeMenuBinding? = null
private val binding get() = _binding!!
private val sharedViewModel: OrderViewModel by activityViewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentEntreeMenuBinding.inflate(inflater, container, false)
val root: View = binding.root
return root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.apply {
lifecycleOwner = viewLifecycleOwner
viewModel = sharedViewModel
EntreeMenuFragment = this@EntreeMenuFragment // ERROR
}
}
....
【问题讨论】:
标签: android kotlin android-databinding android-viewmodel android-viewbinding