kotlin 不知道如何在我的片段中使用视图绑定

o75abkj4  于 2022-11-16  发布在  Kotlin
关注(0)|答案(1)|浏览(190)

我尝试在我的应用程序中实现以下片段。

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
    }
rekjcdws

rekjcdws1#

首先:

android {
    buildFeatures {
        dataBinding true
        viewBinding = true
    }

这是不正确的,viewBinding是dataBinding的一部分,因此同时启用“两者”(分别)是...奇怪的,根据您的标题判断,您只想使用viewBinding,因此将上面的代码更改为:

android {
    buildFeatures {
        viewBinding true
    }

然后,如果您同步您的项目,清理并重新构建它,您应该能够引用片段/ Activity内部的绑定变量(有时绑定变量在构建后未创建,这就是您需要清理并重新构建的原因)

相关问题