Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


PopupMenu PopupWindow $ PopupViewContainer fuga

Tengo un PopupMenu anclado a un botón en la barra de acción, y estoy recibiendo salida de registro sobre una ventana filtrada.

Esto ocurre si mi actividad se detiene mientras el PopupMenu está abierto.

He publicado una pregunta relacionada aquí , pero he resuelto ese problema.

He visto algunas preguntas similares, como esta , pero ninguna relacionada con PopupMenu .

Estoy pensando si puedo conseguir una manija en el PopupWindow$PopupViewContainer mencionado PopupWindow$PopupViewContainer entonces podría quitarlo del WindowManager durante onPause o algo similar, pero no sé conseguirlo. La interfaz expuesta por PopupMenu es bastante limitada.

  • ¿Alguien ha encontrado este problema?
  • ¿Alguien lo arregló o trabajó alrededor de él?
  • ¿Alguien sabe cómo obtener la Window o Window PopupMenu ?

Así es como creo el menú:

 // in Activity @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); final MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); MenuItem login = menu.findItem(R.id.menu_login); final Button button = (Button) login.getActionView().findViewById(R.id.login); button.setOnClickListener(new View.OnClickListener() { public void onClick(View item) { if (profileMenu == null) { // I've tried passing getApplicationContext() here too, with no change profileMenu = new PopupMenu(ListActivity.this, button); profileMenu.getMenuInflater().inflate(R.menu.profile_menu, profileMenu.getMenu()); profileMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { // there was code here, but I removed it and problem persists return false; } }); } profileMenu.show(); } }); 

Aquí está el rastro completo de la pila:

 10-24 11:10:13.878: E/WindowManager(2048): Activity **.app.ListActivity has leaked window android.widget.PopupWindow$PopupViewContainer@4157a7e8 that was originally added here 10-24 11:10:13.878: E/WindowManager(2048): android.view.WindowLeaked: Activity **.app.ListActivity has leaked window android.widget.PopupWindow$PopupViewContainer@4157a7e8 that was originally added here 10-24 11:10:13.878: E/WindowManager(2048): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:374) 10-24 11:10:13.878: E/WindowManager(2048): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:292) 10-24 11:10:13.878: E/WindowManager(2048): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:224) 10-24 11:10:13.878: E/WindowManager(2048): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:149) 10-24 11:10:13.878: E/WindowManager(2048): at android.widget.PopupWindow.invokePopup(PopupWindow.java:988) 10-24 11:10:13.878: E/WindowManager(2048): at android.widget.PopupWindow.showAsDropDown(PopupWindow.java:897) 10-24 11:10:13.878: E/WindowManager(2048): at android.widget.ListPopupWindow.show(ListPopupWindow.java:595) 10-24 11:10:13.878: E/WindowManager(2048): at com.android.internal.view.menu.MenuPopupHelper.tryShow(MenuPopupHelper.java:127) 10-24 11:10:13.878: E/WindowManager(2048): at com.android.internal.view.menu.MenuPopupHelper.show(MenuPopupHelper.java:100) 10-24 11:10:13.878: E/WindowManager(2048): at android.widget.PopupMenu.show(PopupMenu.java:108) 10-24 11:10:13.878: E/WindowManager(2048): at **.app.ListActivity$3.onClick(ListActivity.java:376) 10-24 11:10:13.878: E/WindowManager(2048): at android.view.View.performClick(View.java:4084) 10-24 11:10:13.878: E/WindowManager(2048): at android.view.View$PerformClick.run(View.java:16966) 10-24 11:10:13.878: E/WindowManager(2048): at android.os.Handler.handleCallback(Handler.java:615) 10-24 11:10:13.878: E/WindowManager(2048): at android.os.Handler.dispatchMessage(Handler.java:92) 10-24 11:10:13.878: E/WindowManager(2048): at android.os.Looper.loop(Looper.java:137) 10-24 11:10:13.878: E/WindowManager(2048): at android.app.ActivityThread.main(ActivityThread.java:4745) 10-24 11:10:13.878: E/WindowManager(2048): at java.lang.reflect.Method.invokeNative(Native Method) 10-24 11:10:13.878: E/WindowManager(2048): at java.lang.reflect.Method.invoke(Method.java:511) 10-24 11:10:13.878: E/WindowManager(2048): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 10-24 11:10:13.878: E/WindowManager(2048): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 10-24 11:10:13.878: E/WindowManager(2048): at dalvik.system.NativeStart.main(Native Method) 

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.