单击按钮上的进度条

时间:2011-10-07 05:51:51

标签: android onclick progress-bar

在我的应用程序中,点击一个按钮,应用程序会进行一些处理,通过网络发送一些数据然后停止。由于需要一些时间,我试着加入进度条。进度条的代码位于按钮的onclick侦听器的开头。在进度条形码之后,通过网络处理和发送数据。 但进度条根本不可见。我是否需要在单独的帖子中显示进度条?

这是我用来显示进度条的内容

final ProgressDialog pd=new ProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setMessage("Please wait..");
pd.setCancelable(true);
pd.setIndeterminate(true);
pd.show();

2 个答案:

答案 0 :(得分:5)

使用用于在后台进行处理的AsyncTask类,你也可以在那里显示你的进度条

以下是AsyncTask的简单代码片段

class BackgroundProcess extends AsyncTask<Void,Void,Void>{
   private ProgressDialog progress;
   public doInBackground(Void...arg){
        publishProgress();
        // do your processing here like sending data or downloading etc.
   }
   @Override
   protected void onProgressUpdate(Void... values) {
    super.onProgressUpdate(values);
    progress = ProgressDialog.show(YourActivity.this, "", "Wait...");       
   }
   @Override
   protected void onPostExecute(Void result) {
    super.onPostExecute(result);
    if(progress!=null)
        progress.dismiss();
    progress = null;
   }
}

现在在按钮onclick listener中初始化并执行它,就像这样

new BackgroundProcess().execute();

现在progressdialog将被发布并显示在屏幕上,当进程完成后,然后从onPostExecute()中解除进度对话框

答案 1 :(得分:0)

我将您的代码粘贴到我的应用程序中,它运行得很好。你是从UI线程调用所有这些吗?如果您正在进行一些繁重的处理和数据传输,请确保不要在UI线程上运行它。制作AsyncTask来处理网络内容。

编辑:我将它移动到自己的线程中,它不再有效,所以请确保从UI线程中调用它。

相关问题