DatabaseManager_Impl не является абстрактным и не переопределяет абстрактный метод clearAllTables () в RoomDatabase - PullRequest
0 голосов
/ 29 апреля 2018

Когда я собрал этот код, он показал ошибку сборки:

DatabaseManager_Impl не является абстрактным и не переопределяет абстрактный Метод clearAllTables () в RoomDatabase.

build.gradle:

implementation 'android.arch.persistence.room:runtime:1.0.0'
kapt 'android.arch.persistence.room:compiler:1.0.0'
implementation 'android.arch.persistence.room:rxjava2:1.0.0'
implementation 'android.arch.persistence.room:guava:1.1.0-beta3'

Реализация базы данных в соответствии с указаниями Room:

@Database(entities = {Task.class}, version = 1)
public abstract class DatabaseManager extends RoomDatabase {
    private static final String DATABASE =
                         Iterables.getLast(Splitter.on(".").trimResults().split(BuildConfig.APPLICATION_ID)).concat("-db");
    private static volatile DatabaseManager instance;

    public abstract TaskDao taskDao();

    synchronized public static DatabaseManager onInstance(Context context)     {
        if (instance == null) {
            instance = newInstance(context, false);
        }
        return instance;
    }

    public static DatabaseManager newInstance(Context context, boolean memoryOnly) {
        RoomDatabase.Builder<DatabaseManager> builder;

        if (memoryOnly) {
            builder = Room.inMemoryDatabaseBuilder(context.getApplicationContext(), DatabaseManager.class);
        } else {
            builder = Room.databaseBuilder(context.getApplicationContext(), DatabaseManager.class, DATABASE);
        }

        return builder.fallbackToDestructiveMigration().build();
    }

}

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

У меня была такая же проблема, и я понял, что

//room
    implementation "android.arch.persistence.room:runtime:${arch_version}"
    kapt "android.arch.persistence.room:compiler:${arch_version}"
    implementation "android.arch.persistence.room:rxjava2:${arch_version}"

Эти зависимости должны иметь одинаковую версию. Либо они все 1.0.0 или 1.1.0. Различные версии будут вызывать проблемы.

0 голосов
/ 29 апреля 2018

Исправление для меня состояло в том, чтобы изменить все версии библиотек комнат на 1.0.0

Также обязательно используйте kapt вместо annotationProccessor!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...