You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fragment中使用ViewBinding时DemoFragmentBinding无法识别求助

解决ViewBinding中DemoFragmentBinding无法识别的问题

我实现了如下Fragment代码:

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报错:

Unresolved reference: DemoFragmentBinding

已在App模块的gradle中配置:

android {
    buildFeatures {
        dataBinding true
        viewBinding = true
    }
}

尝试过调整XML布局但无效,以下是可行的排查和解决方向:

  • 核对XML文件名与Binding类名的匹配关系
    ViewBinding生成的类名是XML文件名的驼峰转换结果:比如XML文件名为demo_fragment.xml,生成的类是DemoFragmentBinding;如果文件名是fragment_demo.xml,类名则为FragmentDemoBinding。同时XML文件名必须是小写字母+下划线格式,不能包含大写字母,否则无法正常生成Binding类。

  • 确保XML布局满足ViewBinding要求

    1. 若使用ViewBinding(非DataBinding),布局根标签不需要<layout>包裹,但必须是有效的View/ViewGroup,且需包含代码中用到的cameraViewContainer控件(id必须完全匹配)。示例XML:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
        <FrameLayout
            android:id="@+id/cameraViewContainer"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </LinearLayout>
    
    1. 若混用DataBinding,根标签必须用<layout>包裹,否则DataBinding不会生成对应类。
  • 清理缓存并重新构建项目
    AS缓存可能导致Binding类未及时生成,执行以下操作:

    • 点击Build → Clean Project
    • 再点击Build → Rebuild Project
    • 若无效,点击File → Invalidate Caches...,选择Invalidate and Restart
  • 确认gradle配置生效
    确保配置写在app模块的build.gradle/build.gradle.kts中,且点击Sync Now完成同步。如果不需要DataBinding,可以只开启viewBinding = true,避免不必要的混淆。

  • 检查Android Studio版本
    ViewBinding要求AS 3.6及以上版本,若版本过低,建议升级到最新稳定版。

内容的提问来源于stack exchange,提问作者Clamore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:25:23