3

我有一些数据在用户第一次进入我的数据库时加载到数据库中Activity,并且想展示ProgressDialog一下第一次加载这些数据的时间。我的 Activity 是一个,在我确定数据确实存在之前ExpandableListActivity,我不会创建SimpleExpandableListAdapter或调用传递我的适配器。setListAdapter我的onCreate样子是这样的:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mCategoryDbHelper = new CategoryDBHelper(this);

        // Build default categories... if not there yet
        CategoryDbBuilder builder = new CategoryDbBuilder(this);
        if (!builder.hasCategoriesInTable()) {
            showDialog(PROGRESS_DIALOG_ID);
            builder.fillDbWithDefaultCategories();
            removeDialog(PROGRESS_DIALOG_ID);
        }

        populate();
    }

我已经onCreateDialog这样覆盖了:

@Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
            case PROGRESS_DIALOG_ID: {
                ProgressDialog dialog = new ProgressDialog(this);
                dialog.setMessage("Loading categories for the first time. Please wait...");
                dialog.setIndeterminate(true);
                dialog.setCancelable(false);
                return dialog;
            }       
        }
        return null;
    }

populate()方法读取数据库并设置我的列表适配器,然后调用setListAdapter.

这看起来应该很简单,但结果却是一个巨大的痛苦。任何帮助,将不胜感激。:-)

4

2 回答 2

2

只需使用这个简单的行:

mProgressDialog = ProgressDialog.show(context, "", "msg to show", true);

您可以通过以下方式将其关闭:

mProgressDialog.dismiss();
于 2010-08-30T01:36:57.113 回答
2

使用 AsynTask 将您的数据库加载处理置于后台功能和执行后显示结果中。还有另一个函数来处理某些东西,直到后台进程在这里运行是 asynTask 的示例

Android - 我想向用户显示文件上传进度

于 2010-08-30T04:16:58.023 回答