既存のコードでデータバインディングを使用しましたが、永続化のためにRoomに移行しています。 Florina's Blog forroomに記載されている手順に従いました
部屋の依存関係を削除すると、コードはJavaコードエラーまたはBR関連のエラーなしで正常にビルドされます
annotationProcessor 'Android.Arch.persistence.room:compiler:1.0.0'
そしてそれも実行されますが、database_Implが存在しないというランタイム例外が発生します。それはそのファイルを生成できなかったので。
しかし、注釈プロセッサを元に戻した後、それは私に与えます
Error:(29, 37) error: cannot find symbol class BR
使用しているgradleプラグインはcom.Android.tools.build:gradle:3.0.1
彼らは両方とも一緒に働いていないようです
これまでに行った手順:
RoomとDataのバインディングを一緒に使用した人はいますか?
4日間の努力の後、私はついにコードを適切に実行させました。解決する手順
データバインディングエラーのようなエラー:パッケージcom.packagename.databindingが存在しませんエラー:シンボルクラスCustomMainActivityBindingが見つかりません
デフォルトで発生する100を超えるエラーを表示するには、アプリのgradleに以下のコードを追加する必要があります
allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xmaxerrs" << "4000"
options.compilerArgs << "-Xmaxwarns" << "4000"
}
}
}
データバインディングとRoomArchコンポーネントのGradle依存関係
annotationProcessor 'com.Android.databinding:compiler:3.0.1'
implementation 'Android.Arch.lifecycle:extensions:1.0.0'
implementation 'Android.Arch.persistence.room:runtime:1.0.0'
annotationProcessor 'Android.Arch.lifecycle:compiler:1.0.0'
annotationProcessor 'Android.Arch.persistence.room:compiler:1.0.0'
注:Gradleプラグインのバージョンは3.0.1です
Observableを実装して呼び出すようにすべてのVMを変更しました
registry.notifyChange(this, BR.bar);
変更を通知し、オーバーライドされたメソッドを実装する場合
@Override
public void addOnPropertyChangedCallback(OnPropertyChangedCallback
callback) {
registry.add(callback);
}
@Override
public void removeOnPropertyChangedCallback(
OnPropertyChangedCallback callback) {
registry.remove(callback);
}
これらのことでコードがビルドされましたが、ルームクエリ関連のエラーを解決すると例外なく実行されました。これが主な理由でした。コードはビルドされていましたが、実行されていませんでした。これらのエラーは、プロジェクトを再びRebuidしたときに表示されました。
更新:
Android studio 3.1.の後、Messageウィンドウが消え、すべてのビルドエラーが下に表示されますBuildビュー。エラーのテキストビュー応答を取得するために使用できるトグルがありますが、データバインディングエラーの場合はそれだけでは不十分です。
私を助けた解決策:
IDEでこれらのエラーを取得できませんでした。
私の経験では、次の理由でエラーが発生する可能性があります。