Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: ProgressDialog doesn't show

I'm trying to create a ProgressDialog for an Android-App (just a simple one showing the user that stuff is happening, no buttons or anything) but I can't get it right. I've been through forums and tutorials as well as the Sample-Code that comes with the SDK, but to no avail.

This is what I got:

    btnSubmit.setOnClickListener(new View.OnClickListener() {       public void onClick(View view) {         (...)           ProgressDialog pd = new ProgressDialog(MyApp.this);           pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);           pd.setMessage("Working...");           pd.setIndeterminate(true);           pd.setCancelable(false);            // now fetch the results           (...long time calculations here...)            // remove progress dialog           pd.dismiss(); 

I've also tried adding pd.show(); and messed around with the parameter in new ProgressDialog resulting in nothing at all (except errors that the chosen parameter won't work), meaning: the ProgressDialog won't ever show up. The app just keeps running as if I never added the dialog.

I don't know if I'm creating the dialog at the right place, I moved it around a bit but that, too, didnt't help. Maybe I'm in the wrong context? The above code is inside private ViewGroup _createInputForm() in MyApp.

Any hint is appreciated,

like image 836
Select0r Avatar asked May 09 '10 17:05

Select0r


1 Answers

you have to call pd.show before the long calculation starts and then the calculation has to run in a separate thread. A soon as this thread is finished, you have to call pd.dismiss() to close the prgoress dialog.

here you can see an example:

the progressdialog is created and displayed and a thread is called to run a heavy calculation:

@Override     public void onClick(View v) {        pd = ProgressDialog.show(lexs, "Search", "Searching...", true, false);        Search search = new Search(   ...   );        SearchThread searchThread = new SearchThread(search);        searchThread.start();     } 

and here the thread:

private class SearchThread extends Thread {          private Search search;          public SearchThread(Search search) {             this.search = search;         }          @Override         public void run() {                      search.search();             handler.sendEmptyMessage(0);         }          private Handler handler = new Handler() {              @Override             public void handleMessage(Message msg) {                 displaySearchResults(search);                 pd.dismiss();             }         };     } 
like image 142
RoflcoptrException Avatar answered Sep 23 '22 08:09

RoflcoptrException