14

既存のプロジェクトでデータ バインディングを使用しようとしましたが、ビルドできません。

プロジェクトでの使用build.gradle:

dependencies {
    classpath 'com.android.tools.build:gradle:1.3.1'
    //Data Binding Beta
    classpath "com.android.databinding:dataBinder:1.0-rc4"

    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.7+'

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

申請中

apply plugin: 'com.android.databinding'
apply plugin: 'com.neenbedankt.android-apt'`

そしてモジュールで:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    apt 'com.android.databinding:compiler:1.0-rc1+'
}

RecyclerView/Fragment/ViewHolder/Adapter で Data Binding を使用しようとしました。Android Studio 1.4.1 を使用しています。compileSdkVersion 23 および buildToolsVersion "23.0.1" を使用。apt、さまざまなgradleバージョンなしで試してみました。プルーフは私のクラス/ xmlを読みました..私はまだButterknife(私のプロジェクトは大きすぎて一度にすべてを変更できないため)と他の(しかし無関係な)ライブラリも使用しています。プロジェクトを同期して再構築し、Android Studio を閉じてから開いて、キャッシュを無効にしようとしました。最初から「新鮮な」例を作成しましたが、うまくいきました。

「データ クラス」のゲッター メソッドは @Bindable です。

また、データバインディング パッケージは作成されません。(存在しないというエラーメッセージが表示されます)およびError:cannot generate view binders java.lang.StringIndexOutOfBoundsException: String index out of range: -21

4

14 に答える 14

6

たとえば、Android Studio が「MainActivityBinding」のような生成された Binding クラスを見つけられないなど、DataBinding にはさまざまな問題がありました。Android Studioを再起動すると解決しました。

BR クラスに関しては、それらが見つからないという問題がありましたが、通常はレイアウト クラスで作成したエラーが原因でした。たとえば、存在しないフィールドへのバインディング。他のすべてが正しいことを確認してから、Android Studio を再起動します。

于 2015-10-29T12:50:18.417 に答える
4

Android Studio をバージョン 2.3およびGradle 3.3に更新した後、このエラーが発生しました。解決策は、これをbuild.gradle(app)ファイルに追加することでした。

apt 'com.android.databinding:compiler:2.3.0'
于 2017-03-16T19:50:34.110 に答える
0

プロジェクトを android x に変換し、以下のパッケージから BR クラスをインポートします import androidx.databinding.library.baseAdapters.BR

于 2020-01-12T12:26:37.810 に答える
0

これが遅れていることはわかっていますが、1時間ほど混乱した後、エラーを解決しようとした後、誰かを助けることができることを願っています.

このエラーは、短剣の柄を使用しているときに依存関係を提供するメソッドを複製すると、私のプロジェクトに表示されます。次に例を示します。

@Singleton @Binds public abstract ISettingsCacheDataSource provideSettingsCacheDataSource(SettingsCacheDataSourceImpl dataSource);

このコードを複製すると、このエラーが表示され、複製を削除するか、他の依存関係で修正して修正しました。

于 2021-09-09T23:36:52.993 に答える