4

Android Studio での Android のデータ バインディングに苦労しています。IDE で 2 つのエラー メッセージが表示されますが、これらのエラーの解決方法がわかりません:Cannot resolve symbol 'BR'Cannot resolve symbol @{data.visible ? View.VISIBLE : View.GONE}.

これは私がしたことです:

  • Android SDK ManagerでAndroid Support Repository (Rev. 25)をインストール
  • Android Studio 1.5.1で新しいプロジェクトを作成しました:
    • アプリケーション名DataBindingTest (ドメインmy.namespace、パッケージnamespace.my.databindingtest)
    • スマートフォンとタブレットの場合、最小 SDK バージョン 9、ターゲット SDK バージョン 23
    • 空のアクティビティを追加しました
  • dataBinding { enabled = true }app モジュールのbuild.gradleファイルに追加(および gradle 同期を実行)
  • プロパティ(String) および(Boolean)Dataを拡張して持つクラスを追加しました。BaseObservabletextvisible
  • 変更activity_main.xml:layoutタグで囲み、dataセクションを追加し、 data.textanddata.visibleプロパティを使用しました。
  • MainActivityクラスに初期化コードを追加

これは、変更されたファイルのコードです。

build.gradle (モジュール: アプリ):

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "namespace.my.databindingtest"
        minSdkVersion 9
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    dataBinding {
        enabled = true
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
}

Data.java (パッケージnamespace.my.databindingtest):

package namespace.my.databindingtest;

import android.databinding.BaseObservable;
import android.databinding.Bindable;

public class Data extends BaseObservable {
    private String text;
    private boolean visible;

    public Data(String text, boolean visible) {
        this.text = text;
        this.visible = visible;
    }

    @Bindable
    public String getText() {
        return this.text;
    }

    public void setText(String text) {
        this.text = text;
        notifyPropertyChanged(BR.text);
    }

    @Bindable
    public boolean getVisible() {
        return this.visible;
    }

    public void setVisible(boolean visible) {
        this.visible = visible;
        notifyPropertyChanged(BR.visible);
    }
}

activity_main.xml (解像度/レイアウト):

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable name="data" type="namespace.my.databindingtest.Data"/>
        <import type="android.view.View"/>
    </data>
    <RelativeLayout xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="namespace.my.databindingtest.MainActivity">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@{data.text}"
            android:visibility="@{data.visible ? View.VISIBLE : View.GONE}"/>
    </RelativeLayout>
</layout>

MainActivity.java (パッケージnamespace.my.databindingtest):

package namespace.my.databindingtest;

import android.databinding.DataBindingUtil;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import namespace.my.databindingtest.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        Data data = new Data("Hello world!", true);
        binding.setData(data);
    }
}

IDE のエラーは次のとおりです。

Data.javaファイル内で、BRヒントとともに赤で強調表示されCannot resolve symbol 'BR'ます。

スクリーンショット Data.java

activity_main.xmlファイル内で、@{data.visible ? View.VISIBLE : View.GONE}ヒントとともに赤で強調表示されCannot resolve symbol @{data.visible ? View.VISIBLE : View.GONE}ます。

ここに画像の説明を入力

私がこれまでに試したこと:

  • ファイル>キャッシュの無効化 / 再起動...
  • ビルド>プロジェクトの消去
  • グーグルでコードをいじって...

では、どうすればこれらのエラーを解決できますか?

4

4 に答える 4

2

BRシンボルでも同じ問題がありました。Android Studioを再起動するだけで「解決」しました:/ (私はAndroidとIntelliJに少し慣れていません) BRシンボルを作成する@Bindableの処理中に何かが失敗したようです...

于 2016-03-12T18:21:21.097 に答える
0

RelativeLayout を LinearLayout に変更してみてください。データバインディングを実行する準備を整えるのにも問題がありますが、RelativeLayout がまだサポートされていないことをどこかで読んだことがあると思います

于 2016-03-06T16:39:58.687 に答える