Android DataBinding Внутри Фрагмента - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть следующий код для моего макета и моего фрагмента:

<?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 {
        enabled = true
    }

и

android.databinding.enableV2=true

внутри gradle.properties

1 Ответ

0 голосов
/ 18 февраля 2019

Вы должны использовать DataBindingUtil

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