IntelliJ IDEAで動作する双方向データバインディングを取得できないという問題に直面しています。一方向バインディングは正常に動作します。ここでAndroid双方向データバインディングが動作しない(IntelliJ IDEA)
は私の設定です:
IntelliJ IDEA Ultimate 2016.2.1
Android API: 24
Java: 1.8.0_102
Gradle: 2.14.1
は、ここに私のbuild.gradle
ファイルされる:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable name="customer" type="com.example.xyz.model.Customer"/>
</data>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{Integer.toString(customer.age)}"
tools:text="33"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{customer.name}"/>
</LinearLayout>
:
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "com.example.xyz"
minSdkVersion 17
targetSdkVersion 24
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
}
}
dataBinding {
enabled = true
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:support-v4:24.1.1'
compile 'com.android.support:design:24.1.1'
}
ここではlayout.xml(片道結合)であります
彼女eは、Customerクラスです:
android:text="@={customer.name}"
まず、:
public class Customer extends BaseObservable {
private String name;
private int age;
@Bindable
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Bindable
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}}
これは、私は次のように次の行を変更することにより、結合双方向データをしようとするが、結合一方向のデータのためだけで正常に動作します構文はエラーで(のIntelliJで赤色に変わります)認識されていません:「/"....andコンパイラエラーが表示されないことである:
Error:Gradle: Execution failed for task ':app:compileDebugJavaWithJavac'. java.lang.RuntimeException: Found data binding errors. ****/ data binding error ****msg:Cannot find the getter for attribute 'android:text' with value type java.lang.String on android.widget.EditText. file:C:\Source\Android\test\app\src\main\res\layout\test_layout.xml loc:24:33 - 24:43 ****\ data binding error ****
はまだのIntelliJでサポートされていないバインディング双方向のデータであり、または私は何行方不明?属性android:text
データバインディングについては
これは古いデータバインディングフレームワークを利用しているような感じです。最新のAndroid Gradleプラグインを使用していることを確認してください。Android Studioでは、これはトップレベルの 'build.gradle'ファイルにあります。 – CommonsWare
Android Studioではなく、IntelliJ IDEAを使用しています。 Android SDKのバージョン、Gradleのバージョンなどは上記の私の記事にあります。 –
"AndroidスタジオではなくIntelliJ IDEAを使用しています" - わかっています。しかし、私はIDEAを使用せず、IDEAプロジェクトのどこにGradle版のAndroidプラグインがあるのかわかりません。したがって、Android Studioプロジェクトに所属する場所を参考にして指摘しました。 「Android Plugin for Gradle」(https://developer.android.com/studio/releases/gradle-plugin.html)ではなく、「Android SDKバージョン、Gradleバージョンなどは私のポストにあります」 。 Android Plugin for Gradleは、あなたの質問に表示されているGradleスクリプトに 'apply plugin: 'com.android.application''を持つことができるものです。 – CommonsWare