【问题标题】:Initializing data binding variable in corresponding fragment初始化相应片段中的数据绑定变量
【发布时间】: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


    【解决方案1】:

    删除绑定变量的大写即可避免错误:

    <variable
                name="entreeMenuFragment"
                type="com.example.lunchtray.ui.order.EntreeMenuFragment" />
    
                entreeMenuFragment = this@EntreeMenuFragment  // fixed
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-26
      • 2021-08-19
      • 2020-07-09
      • 1970-01-01
      • 2019-03-19
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      相关资源
      最近更新 更多