【问题标题】:Android ProgressDialog not showing upAndroid ProgressDialog 未显示
【发布时间】:2013-04-22 16:26:42
【问题描述】:

这是我连接到对话框的代码部分。他们按下按钮后,它应该显示出来,显示后,它应该处理数据,完成后,它应该隐藏起来。但它甚至没有出现?

ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("Prosimo počakajte da naloži podatke.");
dialog.setIndeterminate(false);
dialog.setCancelable(false);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

private Button.OnClickListener listener = new Button.OnClickListener() {
    public void onClick(View v){
        if(selectedClass >= 0){
            dialog.show();

            ... data processing ...

            Intent firstUpdate = new Intent(context, ConfigurationActivity.class);
            firstUpdate.setAction("android.appwidget.action.APPWIDGET_ENABLED");
            firstUpdate.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widget_id);
            context.sendBroadcast(firstUpdate);

            dialog.dismiss();
            setResult(RESULT_OK, firstUpdate); 
            finish(); 
        } else {
            Log.i("Schedule", "Missing selections");
        }
    }
};

感谢您的帮助。

【问题讨论】:

  • 如果您处理的代码是网络操作或任何阻塞 UI 线程的操作,则不会显示进度对话框。你应该在 AsyncTask 中处理它们
  • 嗯,是的,我正在从网站上获取一些数据并将其插入数据库。我将如何向其中添加 AsyncTask?
  • 就是这么简单,google一下AsyncTask就可以了。如果你不能随意发表评论,我会发布答案

标签: android button android-activity progressdialog


【解决方案1】:

多亏了“Pragnani”,我才得以成功。这是最终代码:

private class ProgressTask extends AsyncTask<String, Void, Boolean> 
{
    private ProgressDialog dialog;
    private ConfigurationActivity activity;

    public ProgressTask(ConfigurationActivity activity) 
    {
        this.activity = activity;
        context = activity;
        dialog = new ProgressDialog(context);
    }

    private Context context;

    protected void onPreExecute() 
    {
        dialog = new ProgressDialog(context);
        dialog.setMessage("Prosimo počakajte da naloži podatke.");
        dialog.setIndeterminate(false);
        dialog.setCancelable(false);
        dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        dialog.show();
    }

    @Override
    protected void onPostExecute(final Boolean success) 
    {
        if (dialog.isShowing()) 
                    {
            dialog.dismiss();
        }
        if (success) 
                    {
            Toast.makeText(context, "OK", Toast.LENGTH_LONG).show();
        } 
                    else 
                    {
            Toast.makeText(context, "ERROR", Toast.LENGTH_LONG).show();
        }
    }

    @Override
    protected Boolean doInBackground(final String... args) 
    {
        try {    
            ... processing ...

            return true;
        } catch (Exception e){
            Log.e("Schedule", "UpdateSchedule failed", e);
            return false;
        }
    }

}

调用类:

new ProgressTask(ConfigurationActivity.this).execute();

感谢普拉尼亚尼!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    相关资源
    最近更新 更多