0

Android で小さなアプリケーションを作成しようとしています。dialog.show() で次のエラーが発生しました。しかし、それは複製ではありません.なぜそれが起こっているのか、私には何の手がかりもありません. 助けてください。例外は何かをクリーンアップすることであり、次回アプリケーションが正常に動作する場合があります.コードスニペットは以下のとおりです

private ProgressDialog pd = null;

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

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

@Override
protected void onPostExecute(CurrencyReturnPojo result) {
    super.onPostExecute(result);
    callback.onTaskComplete(result);
    pd.dismiss();
}

private ProgressDialog createProgressDialog(Context context, String msg) {
    ProgressDialog progressDialog = new ProgressDialog(context);
    progressDialog.setMessage(msg);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    // progressDialog.setCancelable(false);
    return progressDialog;
}

私が得たこの例外

    android.view.WindowManager$BadTokenException: Unable to add window -- token 
        android.os.BinderProxy@41c3bda0 is not valid; is your activity running?
  at android.view.ViewRootImpl.setView(ViewRootImpl.java:567)
  at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:246)
  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
  at android.app.Dialog.show(Dialog.java:281)
 com. 
 zyksa.converter.pro.AsyncTaskSingleCurrency.onPreExecute(AsyncTaskSingleCurrency.java:
  42)
  at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
   at android.os.AsyncTask.execute(AsyncTask.java:534)
            com.
zyksa.converter.pro.GeneralConverterActivity.singleCurrencyAsynctaskCaller(GeneralConve
 rterActivity.java:1316)
   at 
 com.
zyksa.
converter.pro.GeneralConverterActivity.access$17(GeneralConverterActivity.java:1299) 
com.zyksa.converter.
 pro.GeneralConverterActivity
$FetchAllCurrencyTaskCompletedListner.onTaskComplete
(GeneralConverterActivity.java:1339)
at com.zyksa.converter.
pro.GeneralConverterActivity$
FetchAllCurrencyTaskCompletedListner.onTaskComplete(GeneralConverterActivity.java:1)
at com.zyksa.
converter.pro.AsyncTaskAllCurrency.onPostExecute(AsyncTaskAllCurrency.java:40)
  at com.zyksa.converter
 .pro.AsyncTaskAllCurrency.onPostExecute(AsyncTaskAllCurrency.java:1)
   at android.os.AsyncTask.finish(AsyncTask.java:631)
  at android.os.AsyncTask.access$600(AsyncTask.java:177)
  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:137)
  at android.app.ActivityThread.main(ActivityThread.java:5041)
  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:793)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
  at dalvik.system.NativeStart.main(Native Method)

私はついに私の問題を見つけました。残念ながら、progressDialog.setCancelable(false); という 1 行のコードにコメントを付けました。コード行のコメントを外した後、問題なく正常に動作しています。

ありがとう。

4

1 に答える 1

0

これを試して:

プライベート ProgressDialog pd = null;

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

@Override
protected void onPreExecute() {
    super.onPreExecute();
    pd = new ProgressDialog(ctx);
    pd.setMessage("Loading Please Wait..");
    pd.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    pd.show();
}

@Override
protected void onPostExecute(CurrencyReturnPojo result) {
    super.onPostExecute(result);
    callback.onTaskComplete(result);
    pd.dismiss();
}


}
于 2013-06-05T12:50:00.053 に答える