首页 > 解决方案 > 片段内的Android DataBinding

问题描述

我的布局和片段有以下代码:

<?xml version="1.0" encoding="utf-8"?>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".ScanFragment">

        <SurfaceView
            android:id="@+id/cameraPreview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </FrameLayout>
</layout>
class ScanFragment : Fragment() {
    private lateinit var binding: FragmentScanBinding

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? =
        FragmentScanBinding.inflate(inflater, container, false).also {
            binding = it
        }.root

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        binding.cameraPreview
    }
}

但是,我似乎无法直接从绑定访问 cameraPreview 视图。我已经在下面添加了 DataBinding 的先决条件:

    dataBinding {
        enabled = true
    }

android.databinding.enableV2=true

在 gradle.properties 里面

标签: androidandroid-fragmentskotlinandroid-databinding

解决方案


您应该使用 DataBindingUtil

binding = DataBindingUtil.inflate(inflater, R.layout.fragment_scan, container, false) 
return binding.root

推荐阅读