1

我有一个启动 AsyncTask 并在操作期间显示进度对话框的活动。任务完成后,我会关闭对话框,但在某些手机上会抛出此类错误:

java.lang.IllegalArgumentException
in android.view.WindowManagerImpl.findViewLocked
Application version2.5.2.1
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:587)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:324)
android.view.WindowManagerImpl$CompatModeWrapper.removeView(WindowManagerImpl.java:151)
at  android.app.Dialog.dismissDialog(Dialog.java:321)
at  android.app.Dialog$1.run(Dialog.java:119)
at  android.app.Dialog.dismiss(Dialog.java:306)
at  converter.AsyncTaskSingleCurrency.onPostExecute(AsyncTaskSingleCurrency.java:49)
at  converter.AsyncTaskSingleCurrency.onPostExecute(AsyncTaskSingleCurrency.java:1)
at  android.os.AsyncTask.finish(AsyncTask.java:602)
at  android.os.AsyncTask.access$600(AsyncTask.java:156)
at  android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4517)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
at dalvik.system.NativeStart.main(Native Method)

老实说,我不知道为什么人们会遇到这些错误。如果有人可以帮助我,那就太好了。

我的代码是:

    public AsyncTaskSingleCurrency(Context ctx,
        IAsyncTaskCompletedListner<Double> listner) {
    this.context = ctx;
    this.callback = listner;
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
    pd = createProgressDialog(context, "Loading Please wait...");
    pd.show();
}

@Override
protected Boolean doInBackground(String... params) {
    boolean result = getCurrencyFromTo(params[0]);
    return result;
}

@Override
protected void onPostExecute(Boolean result) {
    super.onPostExecute(result);
    pd.dismiss();
    if (result){
        if(localPubDate!=null)
        Toast.makeText(context, localPubDate, Toast.LENGTH_LONG).show();
        callback.onTaskComplete(currencySingleRate);
    }
    else{
        callback.onTaskComplete(0.0);
    }
}
4

0 回答 0