Android SDK Crash en android.widget.PopupWindow $ 1.onScrollChanged (PopupWindow.java:132)

¿Puede alguien con el equipo de desarrollo de Google explicar cómo evitar este accidente en dispositivos pre-ics? En mi caso, un ImageButton en el elemento ListView es el ancla de PopupWindow para crear una lista desplegable. He intentado todo popup.dismiss (), popup = null, etc, pero nada parece impedir que esto sea un problema cuando el adaptador se restablece.

Estoy recibiendo la siguiente excepción:

FATAL EXCEPTION: main java.lang.NullPointerException at android.widget.PopupWindow$1.onScrollChanged(PopupWindow.java:132) 05-21 17:02:27.736: E/AndroidRuntime(25836): at android.view.ViewTreeObserver.dispatchOnScrollChanged(ViewTreeObserver.java:607) 

Este elemento emergente se encuentra en un elemento de lista. Una vez que el último elemento de la lista se elimina de ListView I resetAdapter para establecer un pie de página. Entonces, cuando me alejo de la pantalla este error se produce.

No en el helado Sandwich: Sandwich de helado. Consulte https://android.googlesource.com/platform/frameworks/base/+/749b0eb2c9a52bb188fd8900859b3725889e0ec0%5E!/

Esto sugiere una corrección relacionada con ancla nula de PopupWindow. ¿Qué se puede hacer? En mi caso un botón en el elemento ListView es el ancla de la ventana emergente. Y el mismo problema aquí:

Https://github.com/JakeWharton/ActionBarSherlock/issues/487

No estoy seguro de si OP todavía necesita esto ya que es medio año más tarde que acabo de ver esto ..

Esto se fija en ICS. Sin embargo, puede asignar un oyente de desplazamiento fijo a través de la reflexión!

 if(Build.VERSION.SDK_INT<Build.VERSION_CODES.ICE_CREAM_SANDWICH){ try { final Field fAnchor = PopupWindow.class.getDeclaredField("mAnchor"); fAnchor.setAccessible(true); Field listener = PopupWindow.class.getDeclaredField("mOnScrollChangedListener"); listener.setAccessible(true); final ViewTreeObserver.OnScrollChangedListener originalListener = (ViewTreeObserver.OnScrollChangedListener) listener.get(window); ViewTreeObserver.OnScrollChangedListener newListener= new ViewTreeObserver.OnScrollChangedListener() { public void onScrollChanged() { try { // PopupWindow implementation has WeakReference<View> WeakReference<View> mAnchor = (WeakReference<View>) fAnchor.get(window); if (mAnchor == null || mAnchor.get() == null) { return; } else { originalListener.onScrollChanged(); } } catch (Exception e) { e.printStackTrace(); } } }; listener.set(window,newListener); } catch (Exception e) { e.printStackTrace(); } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.