Java.lang.IllegalArgumentException: El observador es nulo
Un usuario de una de mis aplicaciones informó de este error. Estoy confundido en cuanto a lo que significa una manera de arreglarlo. Después de un poco de google … todavía no hay suerte. ¿Alguien ha visto esto antes o sabe cómo solucionarlo?
java.lang.IllegalArgumentException: The observer is null. at android.database.Observable.unregisterObserver(Observable.java:59) at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42) at android.widget.HeaderViewListAdapter.unregisterDataSetObserver(HeaderViewListAdapter.java:256) at android.widget.AbsListView.onDetachedFromWindow(AbsListView.java:2309) at android.view.View.dispatchDetachedFromWindow(View.java:8197) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1968) at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1966) at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3257) at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3237) at android.view.ViewGroup.removeView(ViewGroup.java:3185) at com.aheudev.a.slickdeals.adapters.DealPageAdapter.destroyItem(DealPageAdapter.java:174) at android.support.v4.view.ViewPager.populate(ViewPager.java:415) at android.support.v4.view.ViewPager.completeScroll(ViewPager.java:696) at android.support.v4.view.ViewPager.computeScroll(ViewPager.java:668) at android.view.ViewGroup.drawChild(ViewGroup.java:2434) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189) at android.view.View.draw(View.java:9282) at android.view.ViewGroup.drawChild(ViewGroup.java:2584) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189) at android.view.ViewGroup.drawChild(ViewGroup.java:2582) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189) at android.view.ViewGroup.drawChild(ViewGroup.java:2582) at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2189) at android.view.View.draw(View.java:9282) at android.widget.FrameLayout.draw(FrameLayout.java:419) at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1923) at android.view.ViewRoot.draw(ViewRoot.java:1695) at android.view.ViewRoot.performTraversals(ViewRoot.java:1410) at android.view.ViewRoot.handleMessage(ViewRoot.java:2040) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:132) at android.app.ActivityThread.main(ActivityThread.java:4123) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:491) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) at dalvik.system.NativeStart.main(Native Method)
Y vino de esta función en mi PagerAdapter:
- Búsqueda de diseños por ID
- Modos de mezcla de Android
- Agregar dinámicamente a horizontalscrollview
- El fragmento de cuadro de diálogo personalizado se bloquea cuando se llama al método Setter
- Android New Intent inicio método particular
@Override public void destroyItem(View collection, int position, Object view) { ((ViewPager) collection).removeView((View) view); }
- Android obtiene una lista de colores de los recursos
- Admob en fragmentos
- Crear Bitmap NullPointerException
- Obtener el índice de un elemento de matriz basado en el valor
- ¿Cómo usar el cliente Apache HTTP heredado en Android Marshmallow?
- Error android.permission.WRITE_SECURE_SETTINGS
- Superponer una imagen (sobre lienzo) en un VideoView?
- Consumir servicio WCF en SSL en Android
Yo también estaba teniendo el mismo problema y parece que unregisterDataSetObserver en su DealPageAdapter se llama dos veces. Para corregir el problema sobrescribí el unregisterDataSetObserver en mi adaptador como tal
@Override public void unregisterDataSetObserver(DataSetObserver observer) { if (observer != null) { super.unregisterDataSetObserver(observer); } }
¡Espero que esto ayude!
Hay algunas personas que han tenido su problema aquí y aquí
Al mirar la pila de llamadas, parece que su "vista" registró un observador que ahora está tratando de anular su registro. Ese observador ya no está allí aunque se espera. De ahí el error. Esto puede ser un error o puede estar relacionado con cómo estás haciendo las cosas.
Tratar de mirar a través de la fuente de Android para ver si puede rastrear.
Buena suerte.
Una solución alternativa consiste en ajustar el ListView y capturar la excepción. Esta solución funcionó para mí, y todavía no he encontrado ningún efecto secundario.
Public class CustumListView extends ListView {
Public CustumListView (Context context, AttributeSet attrs) { Super (contexto, attrs); } @Anular Protected void onDetachedFromWindow () { tratar { Super.onDetachedFromWindow (); } Catch (IllegalArgumentException iae) { } } }
- Detección de objetos para android con tesseract o OpenCV
- Cómo escribir / prevenir la escritura en el buffer de profundidad OpenGL en GLSL