android-room - 错误:不兼容的类型:SupportSQLiteDatabase 无法转换为 AppDatabase
问题描述
我正在尝试将 Room 持久性库包含到我的 android 项目中。我正在使用 gradle 依赖android.arch.persistence.room:runtime:1.1.1
库,而不是androidx
我尝试将版本更改为1.1.0
&1.1.0-beta2
但得到相同的错误。
房间的 Gradle 依赖项:
// Room components
implementation "android.arch.persistence.room:runtime:$rootProject.roomVersion"
annotationProcessor "android.arch.persistence.room:compiler:$rootProject.roomVersion"
androidTestImplementation "android.arch.persistence.room:testing:$rootProject.roomVersion"
这里$rootProject.roomVersion
的价值是1.1.1
支持库版本:
`implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'`
AppDatabase 类:
import android.arch.persistence.room.Database;
import android.arch.persistence.room.Room;
import android.arch.persistence.room.RoomDatabase;
import android.content.Context;
import com.samcaraschools.userlistapp.module.User;
@Database(entities = {User.class},version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
public static AppDatabase mDatabase;
public abstract UserDao userDao();
public static AppDatabase getAppDatabase(Context context) {
if (mDatabase == null) {
synchronized (AppDatabase.class) {
if (mDatabase == null) {
mDatabase = Room.databaseBuilder(context.getApplicationContext(),
AppDatabase.class, "word_database")
// Wipes and rebuilds instead of migrating
// if no Migration object.
// Migration is not part of this practical.
.fallbackToDestructiveMigration()
.build();
}
}
}
return mDatabase;
}
}
使用上面的代码,我收到以下错误:
error: incompatible types: SupportSQLiteDatabase cannot be converted to AppDatabase
我的代码有什么问题?
解决方案
错误是因为 AppDatabase 类的对象的名称。将其重命名为 mDatabase 以外的任何对象名称,然后它将正常运行。
如果您检查您的 AppDatabase_Impl.java,您会注意到 mDatabase 有错误。这是因为 SupportSQLiteDatabase.java 具有对象名称 mDatabase,它被放置在 AppDatabase 中的对象名称覆盖。
推荐阅读
- c# - 我的服务堆栈服务中的异常没有将消息移动到死信队列
- encryption - OpenResty lua-resty-string:无法解密由 Crypto-JS 加密的密码(AES 默认)
- java - 如何使用其他 DTO 来减少 Spring Boot 中的 if 语句
- ios - 检查哪个 UIScrollView 正在滚动?
- travis-ci - Travic CI 提交失败(coverage_clover XML 文件不可读)
- teamcity - TeamCity 正在用星号替换特定短语
- cassandra - 使用 Cassandra 表作为键值对的正确做法是什么。并对该表执行批量读写
- javascript - Highcharts 图例显示异常管道
- php - 多个相邻结果对的总和
- scala - 从枚举scala对象访问值不起作用