在我的活动的 onCreate 中给出以下代码:
super.onCreate(savedInstanceState);
setContentView(R.layout.logmenu);
//DEBUG CODE
new DBAdaptor(this).dropDatabase();
if (!DBAdaptor.checkDataBase() ) {
showDialog(DIALOG_NO_DB);
}
seasonSpinner = (Spinner) findViewById(R.id.seasonspinner);
List<String> seasons = new ArrayList<String>();
SQLiteDatabase db = new DBAdaptor(this).getReadableDatabase();
/* //Select _key FROM seasons;
Cursor results = db.query("seasons", new String[] {"_key"}, null, null, null, null, null);
results.moveToFirst();
do {
String season = results.getString(results.getColumnIndex("_key"));
seasons.add(season);
} while (results.moveToNext());*/
如果我按所示运行它,并且将填充微调器的部分注释掉,则会发生以下情况:
- 视图呈现。无形中,上次运行的数据库被删除,因此下一次检查将失败
- 弹出一个对话框,询问我是否要初始化数据库。我点击是。
- 数据库初始化运行(涉及与远程服务器的通信)
- 数据库现在已填充并可以使用
- 控制返回到这个视图,空荡荡的旋转器很孤独。
但是,如果我取消注释该块,这些步骤都不会运行。相反,我得到一个 SQLiteException: "no such table: seasons: , while compile: SELECT _key FROM seasons"
为什么不执行步骤 1-5?为什么它会在我准备好之前跳转并尝试编译该查询?以及如何防止这种情况并强制它按顺序执行?