Controllare il seguente codice di esempio. I messaggi di pane tostato sono mostrati ma il file di stato progressivo non viene mai nascosto. Perché?ProgressDialog.dismiss() non funziona
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);
}
}
Dopo cinque secondi il messaggio "OK" viene mostrato, ma il progressdialog non è respinto e, anche se ho messo pd.dismiss() proprio sotto THR pd.show() I wont respingere il progressdialog entrambi e io don So perché questo sta accadendo e mi sta facendo impazzire!
Ha funzionato! Avevi ragione riguardo all'Avvertimento e non l'ho notato. Ma non riesco a capire perché l'IDE mi dica che il metodo .show() non restituisce nulla (nulla) e dopo tutto restituisce un'istanza di un ProgressDialog? – Davidoff
Sì, questo funziona. show() restituisce un'istanza di ProgressDialog ma utilizzando anche la nuova parola chiave, si ottiene la stessa istanza, spero. Usando il metodo di cui sopra, il codice di rimozione funzionava, d'altra parte, usando la nuova parola chiave, il codice non funzionava. – Khushboo
Grazie per l'ottima spiegazione. – suku