【问题标题】:Android: Progress Dialog Doesn't ShowAndroid:进度对话框不显示
【发布时间】:2010-08-30 01:31:01
【问题描述】:

我有一些数据在用户第一次输入我的Activity 时加载到数据库中,并希望在第一次加载这些数据时显示ProgressDialog。我的活动是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

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

【问题讨论】:

    标签: android dialog progress


    【解决方案1】:

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

    Android - I want to show file upload progress to the user

    【讨论】:

    • 是的,这是一种方法,但是 AsyncTask 在我试图让线程休眠几秒钟时遇到了问题,因此进度对话框会停留一段时间,而不仅仅是一闪而过。我最终在一个新线程中进行处理,并在处理程序中终止了进度对话框。
    【解决方案2】:

    只需使用这条简单的线:

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

    您可以使用以下命令将其关闭:

    mProgressDialog.dismiss();
    

    【讨论】:

    • 不。没有骰子。一切安好。我通过生成另一个线程并在 run() 方法中执行 builder.fillDbWithDefaultCategories() 来使其工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多