我尝试在我的应用程序中实现以下片段。
import android.view.Gravity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.jiangdg.ausbc.base.CameraFragment
import com.jiangdg.ausbc.widget.AspectRatioTextureView
import com.jiangdg.ausbc.widget.IAspectRatio
class DemoFragment : CameraFragment() {
private lateinit var mViewBinding: DemoFragmentBinding
override fun initView() {
super.initView()
}
override fun getCameraView(): IAspectRatio {
return AspectRatioTextureView(requireContext())
}
override fun initData() {
super.initData()
}
override fun getCameraViewContainer(): ViewGroup {
return mViewBinding.cameraViewContainer
}
override fun getRootView(inflater: LayoutInflater, container: ViewGroup?): View {
mViewBinding = DemoFragmentBinding.inflate(inflater, container, false)
return mViewBinding.root
}
override fun getGravity(): Int = Gravity.TOP
}
但android studio无法识别DemoFragmentBinding:出现以下错误:
Unresolved reference: DemoFragmentBinding
我认为问题来自XML,我尝试了android Docs上的XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" >
<TextView android:id="@+id/DemoFragment" />
<ImageView android:cropToPadding="true" />
</LinearLayout>
但这改变不了什么
我尝试了几个xml在互联网上找到,但没有一个工作。我不知道如果xml是问题,我的问题可能是愚蠢的,但有人能给予我一个领导的好方向?
编辑:我忘了解释:我已经把这个放在我的应用Gradle中了
android {
buildFeatures {
dataBinding true
viewBinding = true
}
1条答案
按热度按时间rekjcdws1#
首先:
这是不正确的,viewBinding是dataBinding的一部分,因此同时启用“两者”(分别)是...奇怪的,根据您的标题判断,您只想使用viewBinding,因此将上面的代码更改为:
然后,如果您同步您的项目,清理并重新构建它,您应该能够引用片段/ Activity内部的绑定变量(有时绑定变量在构建后未创建,这就是您需要清理并重新构建的原因)