【问题标题】:BR can not be resolved in Android DatabindingBR 无法在 Android 数据绑定中解决
【发布时间】:2019-11-20 09:40:14
【问题描述】:

我正在使用Android数据绑定但BR无法解决 这是我的虚拟视图模型

我已在我的应用 gradle 中启用数据绑定

dataBinding {
        enabled = true
    }

具有数据的 gradle-wrapper.properties:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip

这是我的视图模型

public class DummyViewModel extends BaseObservable {

    private int mSomeValue = 0;
    public void setValue(int value) {
        mSomeValue = value;
        //Here BR can not be resolved
        notifyPropertyChanged(com.something.myapplication.BR.positive);
    }

    @Bindable
    public boolean isPositive() {

        return mSomeValue > 0;
    }
}

这里是Project gradle的classPath

dependencies {

    classpath 'com.android.tools.build:gradle:3.4.2'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

Android Studio version: 3.4

【问题讨论】:

    标签: android data-binding


    【解决方案1】:

    如果您的 XML 有效,请尝试清理和重建。 AS 有时可能需要一段时间来协调数据绑定。如果它仍然没有运行,则很可能您的代码在其他地方有错误。

    XML 应该如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <data>
            <variable
                name="viewModel"
                type="com.something.myapplication.DummyViewModel"/>
        </data>
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:visibility="@{viewModel.positive ? View.VISIBLE : View.GONE}"
                android:src="@drawable/something"/>
       </RelativeLayout>
    </layout>
    
    

    【讨论】:

    • 我还没有设计视图,但只有一个 actvity_main.xml ,其中包含一个带有文本“Hello World”的文本视图。我检查了它的xml它没有错误
    • 只有在有东西可以绑定时才会创建绑定。由于您尚未在任何 XML 中声明您的视图模型,因此尚不存在绑定。尝试将我提供的 xml 添加到您的 activity_main.xml
    • 我只是为我的应用程序开发后端而不是前端。要将 ViewModel 与视图(xml)绑定,它将在稍后阶段
    • 如果没有 UI 通知,则无需使用notifyPropertyChanged 方法。您可以输入虚拟 XML 来创建绑定,也可以在创建绑定后返回此步骤。
    【解决方案2】:

    将您的项目转换为 android x,然后删除旧的 BR 类并从下面的包中添加 BR 类 导入 androidx.databinding.library.baseAdapters.BR

    【讨论】:

      【解决方案3】:

      这个答案很晚,但它可能会帮助像它帮助我的人

      删除'Build'文件和'Rebuild Project'(Build->点击Rebuild Project)

      【讨论】:

        猜你喜欢
        • 2020-01-18
        • 2016-03-09
        • 1970-01-01
        • 2016-06-23
        • 1970-01-01
        • 2018-05-24
        • 2015-12-25
        • 1970-01-01
        • 2016-01-14
        相关资源
        最近更新 更多