0
考慮下面的代碼在我活動的onCreate:SQLiteDatabase提前跳過?
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:「沒有這樣的表格:季節:,而編譯時:SELECT_key FROM seasons」
爲什麼步驟1-5不會發生?爲什麼它在我準備好之前先跳過並嘗試編譯該查詢?我如何防止這種情況並強制它按順序執行?
一個可靠的猜測。我可能會將數據庫檢查放入單獨的活動中。 – Yamikuronue