Я пытаюсь создать базу данных Room, но там говорится, что Context имеет значение null, хотя я пробовал одни и те же классы в разных приложениях, и он работает, как задумано.
@Database(entities = {City.class, User.class}, version = AppDatabase.DB_VERSION, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
static final int DB_VERSION = 1;
private static AppDatabase INSTANCE;
private static final String DATABASE_NAME = "my_db";
public abstract UserDao userDao();
public abstract CityDao cityDao();
public static AppDatabase getInstance() {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(RoomApp.getAppContext(), AppDatabase.class, DATABASE_NAME)
.allowMainThreadQueries()
.build();
}
return INSTANCE;
}
}
public class RoomApp extends Application {
private static WeakReference<RoomApp> appContext;
@Override
public void onCreate() {
super.onCreate();
appContext = new WeakReference<>(this);
AppDatabase.getInstance(); //this will init & fill db
}
public static Context getAppContext() {
return appContext != null ? appContext.get() : null;
}
}
Всякий раз, когда я получаю доступ к AppDatabase.getInstance ();Я получаю сообщение об ошибке: «Невозможно предоставить нулевой контекст для базы данных».