J'ai une classe de dialogue étendue que je veux afficher pendant 3 secondes puis disparaître. Cela fonctionne très bien les 2 premières fois que ça s'appelle, mais ensuite il plante mon application après ça. Certes, je ne suis pas le meilleur avec des discussions et je pense que c'est là où mon problème pourrait être. Comme vous pouvez le voir dans le code ci-dessous (section commentée), j'ai essayé d'utiliser un événement cancel pour supprimer le thread généré, mais cela le fait tomber en panne la première fois qu'il est lancé. J'ai également essayé de faire tout cela sur le thread d'interface utilisateur de la classe parent qui donne le même résultat que celui-ci (se bloque après 3 fois l'affichage de la boîte de dialogue).Annuler la boîte de dialogue après 3 secondes - continue de bloquer mon application après plusieurs utilisations
import java.util.Timer;
import java.util.TimerTask;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Handler;
public class HandResults extends Dialog implements DialogInterface {
HandResults hr;
Timer myTimer;
Handler hand = new Handler();
Thread t;
public HandResults(Context context) {
super(context);
setContentView(R.layout.handresults);
hr = this;
/*
this.setOnCancelListener(new OnCancelListener(){
public void onCancel(DialogInterface dialog) {
t.destroy();
}
});
*/
}
public void showHands(){
this.show();
myTimer = null;
myTimer = new Timer();
myTimer.schedule(new TimerTask() {
@Override
public void run() {
TimerMethod();
}
}, 3000);
}
private void TimerMethod()
{
t = new Thread(){
public void run(){
hand.post(Timer_Tick);
}
};
t.start();
}
private Runnable Timer_Tick = new Runnable() {
public void run() {
hr.cancel();
}
};
}
Quelle est l'exception? – Kiril