SQLiteDatabase跳过了吗?

时间:2012-05-25 02:05:17

标签: android

在我的活动的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());*/

如果我如图所示运行它,并且填充了微调器的部分,则会发生以下情况:

  1. 视图呈现。不可见的是,删除了上次运行的数据库,以便下一次检查失败
  2. 弹出一个对话框,询问我是否要初始化数据库。我点击是。
  3. 数据库init运行(涉及与远程服务器的通信)
  4. 数据库现已填充并可供使用
  5. 控件返回到此视图,空的微调器全部孤独。
  6. 但是,如果我取消注释该块,则这些步骤都不会运行。相反,我得到一个SQLiteException:“没有这样的表:季节:,编译时:SELECT _key FROM seasons”

    为什么不执行步骤1-5?为什么它会在我准备好之前跳过并尝试编译该查询?我如何防止这种情况并强制它按顺序执行?

1 个答案:

答案 0 :(得分:1)

我认为你的问题是你创建的对话框没有阻止方法的其余部分,所以你仍然试图填充微调器,然后用户可以告诉应用程序(通过对话框)来创建数据库