Android:当我想第二次显示progresssDialog时BadTokenException

Mol*_*tes 2 android progressdialog

我有一个我无法解决的问题......

在我的Activity中,我实例化了一个这样的类:

MapView mapView = (MapView) findViewById(R.id.mapview);
myMap = new Map(mapView, this);

构造函数看起来像这样

public Map(MapView mapView, Context context) {
    this.context = context;
    this.mapView = mapView;
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是在这个类的过程中显示progressDialog,所以,在Map中,我得到了

private void showPath() {
    progressDialog = ProgressDialog.show(context, "Veuillez patienter", "Calcul de l'itinéraire en cours...", true, false);

    Thread thread = new Thread(this);
    thread.start();
}
Run Code Online (Sandbox Code Playgroud)

当线程结束时,我这样做

progressDialog.dismiss();

这有效!但只有一次...如果我点击后退按钮,并重新打开我的活动,我得到一个BadTokenException

05-06 23:27:15.941: ERROR/AndroidRuntime(1247): android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@44ecc8e8 is not valid; is your activity running?

我已经尝试了我找到的所有解决方案,但没有人工作......甚至使用扩展AsyncTask的类.

谢谢您的帮助

Ton*_*ony 9

正如错误消息告诉你的那样,这是因为你试图在Activity中显示一个对话但是Activity没有运行(已经完成了吗?).因此,在显示对话框之前,您可能需要确保未完成活动:

public class MyActivity extends Activity {

    public void showDialog(Dialog dialog) {
        if (!isFinishing()) {
            // If activity is not finished, then show this dialog.
            dialog.show();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)