未显示进度对话框

时间:2011-06-01 10:30:18

标签: android progressdialog

我有这段代码片段,这段代码的问题是当我点击“完成”按钮时 ProgressDialog没有显示。请帮助

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.send);


        done = (Button)findViewById(R.id.sendbut);

        done.setOnClickListener(new OnClickListener() {             

            public void onClick(View v) {

                 showProgressDialog();
                 query_str = getString();
                         startUploading();
            }
        });          
 }

 public void showProgressDialog(){
     GlobalClass.printLine("Showing progress dialog"); 
     progressDialog = new ProgressDialog(Send.this);
     progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
     progressDialog.setMessage("Sending...");
     progressDialog.setCancelable(false);
     progressDialog.show();  
     // Start lengthy operation in a background thread
     new Thread(new Runnable() {
         public void run() {
                 // Update the progress bar
                 mHandler.post(new Runnable() {
                     public void run() {
                         progressDialog.setProgress(mProgressStatus);
                         Toast.makeText(getApplicationContext(), "Herererererer",Toast.LENGTH_LONG).show();
                         if(mProgressStatus == 100){                                             
                             Toast.makeText(getApplicationContext(), "Done",Toast.LENGTH_LONG).show();
                             progressDialog.dismiss();
                         }
                     }
                 });                                 
             }
     }).start(); 
 }

5 个答案:

答案 0 :(得分:0)

嗨,我遇到了这个问题,这个链接帮助我解决了这个问题progressdialog tutorial

希望这有助于解决您的问题

答案 1 :(得分:0)

您是否尝试使用AsyncTask

以下是文档:http://developer.android.com/reference/android/os/AsyncTask.html

您可能希望用AsyncTask替换线程。

答案 2 :(得分:0)

您应该使用AsyncTask,也称为Painless threading

现在,要在后台处理时显示进度条,下面是一个示例:

    // ASync Task Begin to perform 
 private class performBackgroundTask extends Async Task < Void, Void, Void >  
 {
    private ProgressDialog Dialog = new ProgressDialog( this);

    protected void onPreExecute() 
    {
           // here you have place code which you want to show in UI thread like progressbar or dialog or any layout . 
           Dialog.setMessage(" please wait...");
           Dialog.show();
    }

    protected Void doInBackground(Void... params) 
    {
       // write here the code to download  or to perform any background task.
   return null;
  }

  protected void onPostExecute(Void unused) {
     Dialog.dismiss();  // here we have to dismiss the progress dialog 
   // To display fetched data in textview, imageview, or any

  }

 }

答案 3 :(得分:0)

@Hari ..

我认为你正在调用startUploading()内部的另一个函数,这就是为什么没有显示ProgressDialog的原因。尝试在XML中创建progressBar并在按钮单击内写入所有函数。如果这是一个递归函数,则更改你的逻辑,在按钮内点击它本身。

答案 4 :(得分:0)

由于您无法使用

,Paresh Mayani上面发布的答案将无效
new ProgressDialog(this)

在AsyncTask中。 “这个”需要是一个上下文。