2015-05-17 47 views
0

從第一個activity到第二個activity,我試圖顯示Progress Dialogue。不幸的是我不斷收到此錯誤:進行下一個活動時,活動已泄漏窗口

05-17 17:58:30.274 29115-29115/me.tb.player E/WindowManager﹕ android.view.WindowLeaked: Activity me.tb.player.SkeletonActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{1ec8d3e2 V.E..... R......D 0,0-1026,288} that was originally added here 
      at android.view.ViewRootImpl.<init>(ViewRootImpl.java:363) 
      at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:261) 
      at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
      at android.app.Dialog.show(Dialog.java:298) 
      at me.tb.player.SkeletonActivity$GetProgress.onPreExecute(SkeletonActivity.java:1140) 
      at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587) 
      at android.os.AsyncTask.execute(AsyncTask.java:535) 
      at me.tb.player.SkeletonActivity$13.onClick(SkeletonActivity.java:1178) 
      at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:160) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5254) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) 

什麼情況是,一個AlertDialog彈出,如果用戶點擊是,被認爲是下一個activity

private class GetProgress extends AsyncTask<Void, Void, Void> { 

     ProgressDialog dialog1; 

     protected void onPreExecute() { 
      super.onPreExecute(); 
      if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { 
       dialog1 = new ProgressDialog(new ContextThemeWrapper(
         SkeletonActivity.this, android.R.style.Theme_Holo_Light_Dialog)); 
      } else { 
       dialog1 = new ProgressDialog(SkeletonActivity.this); 
      } 
      dialog1.setCanceledOnTouchOutside(false); 
      dialog1.show(); 
     } 

     protected Void doInBackground(Void... params) { 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        updateScore(); 
        clearText(); 
        turnComplete(); 
       } 
      }); 
      return null; 
     } 

     protected void onPostExecute() { 
      dialog1.dismiss(); 
     } 
    } 

這裏是Dialogue

public void messageAtEndOfTurn(String message) { 
     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); 

     alertDialogBuilder.setMessage(message); 
     alertDialogBuilder.setCancelable(false).setPositiveButton("Yes", 
       new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int id) { 
         GetProgress getProgress = new GetProgress(); 
         getProgress.execute(); 
        } 
       } 
       }).setNegativeButton("No", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int id) { 
       clear(); 
      } 
     }); 

     mAlertDialog = alertDialogBuilder.create(); 

     mAlertDialog.show(); 
} 

我相信這個問題有去到下一個活動時對Alert Dialog無法正常通話dismiss做。或者,也許我的Progress Dialog有錯誤。有人可以幫忙嗎?

另外,是否有一個更簡單的方法來製作一個Progress Dialog從一個activity到下一個 - 我真的需要使用AsyncTask嗎?

+0

這是因爲不正當的解僱 –

+0

不正當地解僱了「進度對話」 - 所以我該如何解僱呢? – user2456977

+0

ProgressDialog,而不是AlertDialog,因爲我覺得一旦你點擊AlertDialog的任何按鈕,它就會自動被解散。你在哪裏調用下一個活動? –

回答

0

在完成當前活動之前,您必須關閉對話框。

相關問題