Please check the following sample code. Toast messages are shown but the progressdialog is never hidden. Why?
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.Toast;
public class LoadExamActivity extends Activity implements Runnable{
ProgressDialog pd;
Handler Finished = new Handler(){
@Override
public void handleMessage(Message msg){
Toast.makeText(getApplicationContext(), "DONE!", Toast.LENGTH_SHORT).show();
pd.dismiss();
}
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.exam);
Toast.makeText(this, "START!", Toast.LENGTH_SHORT).show();
pd = new ProgressDialog(this);
pd.show(this, "Waiting...", "Please wait five seconds...");
Thread th = new Thread(this);
th.start();
}
public void run() {
//To change body of implemented methods use File | Settings | File Templates.
for (int i = 0; i < 5; i++)
{
try
{
Thread.sleep(1000);
}catch(Exception e){}
}
Finished.sendEmptyMessage(0);
}
}
After five seconds the “DONE” message is shown but the progressdialog is not dismissed and even if I put pd.dismiss() right below thr pd.show() I wont dismiss the progressdialog either and I don’t know why this is happening and it’s driving me crazy!
You are not using the progress dialog right. You’ll notice the IDE shows a neat little warning sign next to your
pd.show(...)line.What you are doing is
Create an (invisible, irrelevant) progress dialog using
new ProgressDialog()Create another progress dialog with the desired text using
pd.Show(), without storing a reference to it.Dismiss the first dialog. The dialog from (2) remains.
If you replace your code with:
it should run just fine.