Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Show spinning wheel dialog while loading data on Android

I want to show a spinning wheel dialog while my app loads some data:

Spinning wheel dialog

The spinning wheel dialog should show on a button click. I’m using the code below but it does now show the spinning wheel. What could be the problem?

public void CheckAccount(String username, String password) {     try {          final ProgressDialog progDailog = ProgressDialog.show(this,             "Progress_bar or give anything you want",             "Give message like ....please wait....", true);         new Thread() {             public void run() {                 try {                     // sleep the thread, whatever time you want.                      sleep(1000);                 } catch (Exception e) {                 }                 progDailog.dismiss();             }         }.start();          //getting data code here         //getting data code here         //getting data code here         //getting data code here         //getting data code here      } catch (Exception e) {         Log.e(LOG_TAG, e.getMessage());         PopIt("CheckAccountError", e.getMessage(), "Denied");     } } 
like image 271
Kris Avatar asked May 28 '11 04:05

Kris


People also ask

Which view is used to displays loading spinner?

Spinner is used to display progress of those tasks whose total time of completion is unknown. In order to use that, you just need to define it in the xml like this. spinner. setVisibility(View.

How do you set progress dialog in Kotlin?

Step by Step Implementation We demonstrated the application in Kotlin, so make sure you select Kotlin as the primary language while creating a New Project. Navigate to the app > res > layout > activity_main. xml and add the below code to that file. Below is the code for the activity_main.


2 Answers

To create.

ProgressDialog dialog = new ProgressDialog(this); // this = YourActivity dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); dialog.setTitle("Loading"); dialog.setMessage("Loading. Please wait..."); dialog.setIndeterminate(true); dialog.setCanceledOnTouchOutside(false); 

To show.

dialog.show(); 

To dismiss.

dialog.dismiss(); 
like image 42
Abhi Avatar answered Sep 21 '22 07:09

Abhi


So, seeing that this answer is getting more and more upvotes, I have decided that I should take it upon myself to improve the quality of the answer. As I look at the original, I see no real 'answer' to the question of "what is the problem in my code?". I am leaving the original answer intact below to preserve the linking, which is what I am assuming has caused the answers popularity.

Updated Answer

It is likely that you are violating the 'single thread model'. The Android UI Toolkit is not threadsafe, and should only be manipulated from the 'main' UI thread. Android has a handful of helpful methods you can use to ensure that your UI manipulations are done on the UI thread. Most of the details of these method calls can be found in the Android Painless Threading blog post (linked in the word 'one' below, and here for quick reference).

Looking at your code, the specific violation I see is that a ProgressDialog is being created in what is likely the UI thread, which is then dismissed in the newly created background thread.

You would be better off encapsulating your background method in a Runnable and using View#post(Runnable) to do the work in the background.

Remember, there are many ways to do background, so take a look at what is available, and use what feels right for your situation.

Original Answer

Take a look at one of the many tutorials of how to do asynchronous work in Android.

Also, here are some other StackOverflow questions that are similar

Progress dialog problem in Android

Progress Dialog on open activity

Progress Dialog while starting new activity

Android: Progress Dialog spinner not spinning

Updating progress dialog

android: showing a progress dialog

like image 67
nicholas.hauschild Avatar answered Sep 24 '22 07:09

nicholas.hauschild