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
- 空のアクティビティを追加しました
- アプリケーション名DataBindingTest (ドメイン
dataBinding { enabled = true }
app モジュールのbuild.gradleファイルに追加(および gradle 同期を実行)- プロパティ(String) および(Boolean)
Data
を拡張して持つクラスを追加しました。BaseObservable
text
visible
- 変更
activity_main.xml
:layout
タグで囲み、data
セクションを追加し、data.text
anddata.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'
ます。
activity_main.xml
ファイル内で、@{data.visible ? View.VISIBLE : View.GONE}
ヒントとともに赤で強調表示されCannot resolve symbol @{data.visible ? View.VISIBLE : View.GONE}
ます。
私がこれまでに試したこと:
- ファイル>キャッシュの無効化 / 再起動...
- ビルド>プロジェクトの消去
- グーグルでコードをいじって...
では、どうすればこれらのエラーを解決できますか?