Compruebe el siguiente código de ejemplo. Los mensajes de pan tostado se muestran pero el diálogo de progreso nunca se oculta. ¿Por qué?ProgressDialog.dismiss() no funciona
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);
}
}
Después de cinco segundos el mensaje "DONE" se muestra pero el progressdialog no es despedido e incluso si pongo pd.dismiss() justo debajo del thr pd.show() no voy a descartar la progressdialog tampoco y don ¡No sé por qué sucede esto y me está volviendo loco!
¡FUNCIONÓ! Tenías razón sobre la Advertencia y no me di cuenta. Pero no puedo entender por qué el IDE me dice que el método .show() no devuelve nada (nulo) y, después de todo, devuelve una instancia de un ProgressDialog. – Davidoff
Sí, esto funciona. show() devuelve una instancia de ProgressDialog, pero con la nueva palabra clave también, obtenemos la misma instancia, espero. Usando el camino anterior, el código de descarte funcionó, por otro lado, usando la nueva palabra clave, el código no estaba funcionando. – Khushboo
Gracias por la gran explicación. – suku