我从这里下载了Room BasicSample应用程序:https://github.com/googlesamples/android-architecture-components
此示例是只读数据库。没有插入单个实体的示例。我正在修改它,并努力弄清楚如何调用getDatabase,这样我就可以在按钮上点击db上的简单插入 - getDatabase()。wordDao()。insert(...)?
如何访问单例BasicApp并调用getDatabase方法,以及从何处调用它?
任何帮助表示赞赏。
单个插入
@Insert(onConflict = IGNORE)
void insert(WordEntity word);
AppDatabase.java(不确定这个插入方法是否在这里)
private static void insert(final AppDatabase database, final WordEntity word) {
database.wordDao().insert(word);
}
BASIC app.Java
public class BasicApp extends Application {
private AppExecutors mAppExecutors;
@Override
public void onCreate() {
super.onCreate();
mAppExecutors = new AppExecutors();
}
public AppDatabase getDatabase() {
return AppDatabase.getInstance(this, mAppExecutors);
} // ==> how do I get access to this?
public DataRepository getRepository() {
return DataRepository.getInstance(getDatabase());
}
}
如果您从活动或服务访问BasicApp类,则可以调用((BasicApp)getApplication()).getDatabase()
。
取决于你在哪个班级工作。
如果它是一个活动方法(如onCreate):
BasicApp basicApp = (BasicApp) this.getApplicationContext();
AppDatabase appDatabase = basicApp.getDatabase();
//... do work here
如果您只有一个视图(例如在onClickListener中将视图作为arg传递):
BasicApp basicApp = (BasicApp) view.getContext().getApplicationContext();
AppDatabase appDatabase = basicApp.getDatabase();
//... do work here