android - 片段内的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 里面
解决方案
您应该使用 DataBindingUtil
binding = DataBindingUtil.inflate(inflater, R.layout.fragment_scan, container, false)
return binding.root
推荐阅读
- python - 如何在 python 正则表达式中对日期匹配应用验证
- html - 长标题文本表无法修复
- regex - “查找和替换”中的正则表达式;如何匹配 \n (换行符)?
- x86 - 为什么在 x86 处理器中触发 NMI 信号边缘,而触发 INTR 信号电平?
- video - MPEG4 X264 与 NVENC H264 编码在旧设备上播放兼容性
- laravel - Laravel 查询生成器调用成员函数 where() on null
- node.js - 我正在使用 node express 和 passport-jwt 创建一个简单的路由来使用 json web token 进行身份验证
- codeigniter-4 - 错误异常 - 未定义变量:CodeIgniter4 中的会话
- image - 如何从 Multi Image Picker 保存图像,在 Flutter 中保留其原始元数据/exif 内容?
- typescript - 复杂的泛型类型约束和类型推断