2017-04-25 1 views
0
내가 WindowLeaked 큰 문제가 오전

: 코드 여기WindowLeaked 문제

E/WindowManager: android.view.WindowLeaked: Activity CrearGrupo has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{3702bf39 V.E..... R....... 0,0-960,883} that was originally added here 
                  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:363) 
                  at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:271) 
                  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85) 
                  at android.app.Dialog.show(Dialog.java:298) 
                  at es.uva.tel.gco.CrearGrupo$2.onClick(CrearGrupo.java:175) 
                  at android.view.View.performClick(View.java:4780) 
                  at android.view.View$PerformClick.run(View.java:19866) 
                  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: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:903) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

:

  final Dialog dialog2 = new Dialog(activity, R.style.dialog); 
      tituloDialogo=res.getString(R.string.crearGrupoDiálogo); 
      dialog2.setTitle(tituloDialogo +" "+listaAsignaturas.get(pos)); 
      dialog2.setContentView(R.layout.prefijo_grupo); 
if (control == 0){ 
         //listNotebooks(pos); 
         Intent intent=new Intent(getApplicationContext(),MostrarCrearGrupos.class); 
         intent.putExtra("asignatura",listaAsignaturas.get(pos)); 
         intent.putExtra("prefijo",prefGrupo.getText().toString()); 
         intent.putExtra("nombreLibreta",notebookName); 
         startActivity(intent); 

        } 
       } 
      }); 
      dialog2.show(); 

대화 상자가 하나 개의 이름과 1 접두사를 입력 할 수 있도록이 개 입력을 사용하여 일반 창입니다 만 다른 대화 상자를 표시하려고 할 때 앱이 다운됩니다. 이미 솔루션을보고 그것을 해결하려고 :

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    if (dialog2 != null) { 
     dialog2.dismiss(); 
     dialog2 = null; 
    } 
} 

@Override 
protected void onPause(){ 
    super.onPause(); 
    if (dialog2 != null) { 
     dialog2.dismiss(); 
     dialog2 = null; 
    } 

} 

@Override 
protected void onStop(){ 
    super.onStop(); 
    if (dialog2 != null) { 
     dialog2.dismiss(); 
     dialog2 = null; 
    } 

} 

를하지만 작품을 나던. 어떤 아이디어.

답장을위한 Thx. :)

+0

제거 dialog2 = null; 모든 3 가지 방법 –

+1

에서 당신은 매번 새로운 dialog2 객체를 생성합니다 : 마지막 대화 상자 dialog2 전역 대화 상자 객체를 만들 때 변경하십시오 –

+0

@ Aquo169 인 텐트를 호출하기 전에 dialog.if (control == 0) {dialog2.dismiss () // 모든 사용자의 의도 코드} –

답변

0

새로운 활동을 시작한 후에 dialog2.show()를 호출하려고합니다. 그것을 제거하면 코드가 작동합니다. 여기

가 유출 된 윈도우 오류가 발생하는 주된 이유입니다 : A 활동 대화 상자의 상단에 내장되어

우리는 모든 활동 안드로이드 마찬가지로, 창 관리자 창 관리자를 가지고 있다는 것을 알고, PopupWindow는 해당 창 관리자 창을 가지고 매니저. 대화 상자, Activity의 PopupWindown이 혼자 존재해서는 안되기 때문에 Dialog (또는 PopupWindow) Activity를 가지고 finish()로 갈 때 Dialog 나 PopupWindow가 표시되면 Window Leaked 예외가 발생합니다. Dialog (또는 PopupWindow) WindowManager에는 누가 연관 될 수없는 사람이 있습니다. 따라서 창 관리자가 유출되었습니다.

Android.view.WindowLeaked는 대개 활동 및 대화 상자 표시에 나타납니다.

대화 상자에서 활동 만들기 대화 상자를 먼저 끈 다음 활동을 닫으면 활동을 먼저 종료 한 다음 대화 상자를 닫으면 오류 android.view.WindowLeaked 오류가 발생합니다. 분석 이유는 다음과 같습니다. 활동을 기준으로 대화 상자가 만들어집니다 : new ProgressDialog (this); 이것은 활동입니다. Activtity가 먼저 완료되면 Dialog에 첨부 파일이 없으므로 android.view.WindowLeaked가보고됩니다.

+0

나는 dialog2.show()를 if (control == 0)로 설정하고 if와 inten 사이에 dialog2.dissmis를 설정하려고하지만 여전히 windowleak을 가지고있다. ( – Aquo169

+0

왜 당신은 동시에 대화창과 인 텐트를 열고 있는가? –

+0

대화 상자를 통해 필요한 정보를 얻으려고하는 중입니다. 언제 (예 : 사용자가 그것을 소개하고 계속해서 누르면 새 창이 나타나서이 정보를 처리합니다 .. – Aquo169