Android 视图绑定,找不到类 'ResultProfileBinding'

本文解析了在Android开发中,布局文件自动生成的绑定类名称并非统一为ResultProfileBinding,而是依据布局XML文件名生成,例如activity_main.xml对应ActivityMainBinding。文章通过示例代码展示了如何正确使用布局绑定。

Android 文档,傻傻地以为,不管哪个视图,自动生成的绑定类名称都是 ResultProfileBinding。

实际上自动生成的绑定类名称是由布局的 xml 文件名生成的。

例:layout 文件名是 activity_main.xml ,则生成的绑定类名为:ActivityMainBinding。

private lateinit var binding: ResultProfileBinding

    @Override
    fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        binding = ResultProfileBinding.inflate(layoutInflater)
        setContentView(binding.root)
    }
    

上面代码,变更为:

private lateinit var binding: ActivityMainBinding

    @Override
    fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
    }
    

 

### DataBinding 数据绑定机制 DataBinding 是 Android 的一个数据绑定库,允许开发者通过 XML 文件以声明性的方式将布局文件中的 UI 控件与应用程序的数据源相连接[^1]。这种技术简化了传统的手动编码方式来更新 UI 或者获取用户输入的过程。 #### 单向数据绑定 当提到单向数据绑定时,这意味着一旦定义好从模型到视图的方向后,在该方向上的任何改变都会自动同步至另一端而无需额外编写代码去通知变化的发生[^2]。例如,如果修改了一个 Java/Kotlin 里的字段值,则相应的 TextView 文本也会随之更改。 #### 双向数据绑定 对于需要交互式的场景来说,比如编辑框内的内容应当既能影响后台存储又能被后者所驱动显示给用户看的情况,则需要用到双向绑定功能。不过这部分不在当前讨论范围内。 ### 使用 DataBinding 进行开发 为了能够利用 DataBinding 提供的功能,项目结构以及构建配置都需要做一些调整: - **启用支持**:确保 `build.gradle` 中启用了 data binding 支持。 ```gradle android { ... buildFeatures { dataBinding true } } ``` - **创建 ViewModel**:遵循 MVVM 设计模式的思想,应该把业务逻辑封装在一个独立于 Activity/Fragment 的地方——ViewModel 里[^4]。 - **设置 Layout 文件** 下面展示如何在 XML 中引入并操作这些变量: ```xml <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <!-- 定义要使用的变量 --> <variable name="user" type="com.example.User"/> </data> <LinearLayout ... > <!-- 将 user 对象的属性直接赋值给控件 --> <TextView android:text="@{user.firstName}" /> </LinearLayout> </layout> ``` 这段代码片段展示了怎样通过 `<data>` 标签下的 `<variable>` 来声明想要访问的对象,并且可以直接使用 `${}` 表达式语法来进行简单的属性读取或调用方法[^3]。 另外还提到了一些高级特性如处理 null 值、合并运算符(`??`)的应用等,这些都是为了让表达更加简洁安全。 最后给出了一段 Kotlin 示例用于演示如何准备传递给 layout 的实际参数[^5]: ```kotlin val binding: ResultProfileBinding = DataBindingUtil.setContentView(this, R.layout.result_profile) binding.user = User("Bond", "James Bond") ``` 以上就是有关 DataBinding 库的基础概念及其基本用法介绍。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值