1

I want to show a progress dialog while loading some data from remote server :

I'm using the following thread in order to get the data and it's working, but i'm not able to show the progress bar on the activity:

public class Request {

    public String text ;
    public boolean downloadText(String urlStr) {
        final String url = urlStr;
        new Thread () {
            public void run() {
                int BUFFER_SIZE = 2000;
                InputStream in = null;
                Message msg = Message.obtain();
                msg.what=2;
                try {
                    in = openHttpConnection(url);

                    InputStreamReader isr = new InputStreamReader(in);
                    int charRead;
                      text = "";
                      char[] inputBuffer = new char[BUFFER_SIZE];

                          while ((charRead = isr.read(inputBuffer))>0)
                          {                    
                              //---convert the chars to a String---
                              String readString = 
                                  String.copyValueOf(inputBuffer, 0, charRead);                    
                              text += readString;
                              inputBuffer = new char[BUFFER_SIZE];
                          }
                         Bundle b = new Bundle();
                            b.putString("text", text);
                            msg.setData(b);
                          in.close();

                }catch (IOException e) {
                    e.printStackTrace();
                }


            }
        }.start();

    }

would you please tell me how can i do it !!

1
  • First of all where is your code for ProgressDialog ? I didnt find it in the above code. And if you are asking to implement in the above class, check my answer. Commented Apr 29, 2013 at 10:39

5 Answers 5

3

create the class as below and just call the object of this class.

class MyTask extends AsyncTask<Void, Void, Void> {

        ProgressDialog Asycdialog = new ProgressDialog(ActivityName.this);

        @Override
        protected void onPreExecute() {

            super.onPreExecute();
            Asycdialog.setMessage("Loading...");
            Asycdialog.show();
        }

        @Override
        protected Void doInBackground(Void... arg0) {

            // do the task you want to do. This will be executed in background.
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {

            super.onPostExecute(result);
            Asycdialog.dismiss();
        }
    }
Sign up to request clarification or add additional context in comments.

Comments

2

Use progressDialog

final ProgressDialog progress=ProgressDialog.show(youractivity.this,"","message");
 new Thread()
  {
   public void run()
   {
     try{
      youractivity.this.runOnUiThread(new Runnable(){
      @Override
      public void run() {
       // TODO Auto-generated method stub
               // your code
      }
      });
     }
     catch(Exception e)
     {
     }
     progress.dismiss();
   }
}.start()

Also, note that if you want to use Toast, you should use runOnUiThread

Comments

1

If you do not want to change the structure of your code, you can use runOnUiThread or an Handler to show and dissmiss the progress dialog. Show it when the firs line of the run method is excuted and dismiss it in the finally block.

 public void run() {

    runOnUiThread(new Runnable() {

      public void run(){
         // show progress dialog
      }  

      });  

  /// your code here
  try {




  } catch (IOException e) {
  } finally {
          runOnUiThread(new Runnable() {

      public void run(){
         // dismiss progress dialog
      }  

      });  
  } 


 }

Comments

0

Create Progress Dialog in AsyncTask

private class YourAsyncTask extends AsyncTask<Void, Void, Void> {
     protected Void doInBackground(Void... args) {
        // do background work here
        return null;
     }

     protected void onPostExecute(Void result) {
         // do UI work here
     }
 }

Comments

0
    pDialog = ProgressDialog.show(context, null, "Loading...", true);
    pDialog.setCancelable(false);

    new Thread() {
        public void run() {

            // handle the exception somehow, or do nothing

            // run code on the UI thread

            runOnUiThread(new Runnable() {

                @Override
                public void run() {

                    try {


                                 // do yor ui part here
                         } catch (Exception e) {

                        e.printStackTrace();
                    }

                }
            });
        }
    }.start();

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.