2016-08-18 2 views
0

無料のウォークアクティビティを開始するときにウィンドウリークが発生しています。私はそのシナリオを処理しましたが、なぜ私がまだ得ているのかまだ分かりません。ここでアクティビティにはまだ処理済みのリークしたウィンドウが表示されています

は私のコードです:

private void showPopUp() { 
    final Dialog dialog = new Dialog(this); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before 
    dialog.setContentView(R.layout.wwmove_screen_popup); 

    TextView mNo = (TextView) dialog.findViewById(R.id.move_no); 
    // if button is clicked, close the custom dialog 
    mNo.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 
    TextView mYes = (TextView) dialog.findViewById(R.id.moveyes); 
    mYes.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      killAll(); 
      storeSegmentcompletdInformation("skipped"); 
      storeOneDayInformation("skipped"); 
      Intent gotoSummary = new Intent(WwFreeWalkMoveActivity.this, WwFreeWalkSummaryActivity.class); 
      gotoSummary.putExtra(ParamConstants.SUMMARY_GOOGLEFIT_KEY, String.valueOf(stepCountGoogleFit)); 
      startActivity(gotoSummary); 
     } 
    }); 

    dialog.show(); 
} 

私は取得していますエラーは次のとおりです。

08-18 10:38:53.172 28118-28118/com.mobiefit.walk E/WindowManager: android.view.WindowLeaked: Activity com.mobiefit.walk.freewalk.activity.WwFreeWalkMoveActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{21f913f9 V.E..... R.....I. 0,0-960,516} that was originally added here 
                    at android.view.ViewRootImpl.<init>(ViewRootImpl.java:364) 
                    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:274) 
                    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85) 
                    at android.app.Dialog.show(Dialog.java:298) 
                    at com.mobiefit.walk.freewalk.activity.WwFreeWalkMoveActivity.showPopUp(WwFreeWalkMoveActivity.java:953) 
                    at com.mobiefit.walk.freewalk.activity.WwFreeWalkMoveActivity.onOptionsItemSelected(WwFreeWalkMoveActivity.java:1806) 
                    at android.app.Activity.onMenuItemSelected(Activity.java:2936) 
                    at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:404) 
                    at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:185) 
                    at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100) 
                    at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:100) 
                    at android.support.v7.widget.ToolbarWidgetWrapper$1.onClick(ToolbarWidgetWrapper.java:192) 
                    at android.view.View.performClick(View.java:4785) 
                    at android.view.View$PerformClick.run(View.java:19888) 
                    at android.os.Handler.handleCallback(Handler.java:739) 
                    at android.os.Handler.dispatchMessage(Handler.java:95) 
                    at android.os.Looper.loop(Looper.java:135) 
                    at android.app.ActivityThread.main(ActivityThread.java:5273) 
                    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:908) 

誰もが私が間違っているのを教えすることはできますか?

答えて

0

通常、ウィンドウのリーク例外は、適切に閉じられないダイアログによって発生します。 あなたは次のアクティビティまたはタスクに進む前に、あなたのコード 使用この

dialog.dismiss(); 

mYes.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dialog.dismiss(); 
      killAll(); 
      storeSegmentcompletdInformation("skipped"); 
      storeOneDayInformation("skipped"); 
      Intent gotoSummary = new Intent(WwFreeWalkMoveActivity.this, WwFreeWalkSummaryActivity.class); 
      gotoSummary.putExtra(ParamConstants.SUMMARY_GOOGLEFIT_KEY, String.valueOf(stepCountGoogleFit)); 
      startActivity(gotoSummary); 
     } 
    }); 
0

]ダイアログ を却下しなければなりません。 dialog.dismiss();ダイアログを閉じます。

 public void onClick(View v) { 
      killAll(); 
      storeSegmentcompletdInformation("skipped"); 
      storeOneDayInformation("skipped"); 
      Intent gotoSummary = new Intent(WwFreeWalkMoveActivity.this, WwFreeWalkSummaryActivity.class); 
      gotoSummary.putExtra(ParamConstants.SUMMARY_GOOGLEFIT_KEY, String.valueOf(stepCountGoogleFit)); 
      dialog.dismiss(); // here you just have to add one line. 
      startActivity(gotoSummary); 
     } 
関連する問題