java.lang.IllegalArgumentException: наблюдатель имеет значение null

Пользователь одного из моих приложений сообщил об этой ошибке. Я в замешательстве, что это значит и как это исправить. После небольшого поиска в Google ... все еще не повезло. Кто-нибудь видел это раньше или знает, как это исправить?

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)

И это произошло из этой функции в моем PagerAdapter:

@Override
public void destroyItem(View collection, int position, Object view) {
    ((ViewPager) collection).removeView((View) view);
}

person aheuermann    schedule 03.09.2011    source источник
comment
Я нашел ответ здесь..   -  person aheuermann    schedule 20.12.2011


Ответы (2)


У меня тоже была такая же проблема, и кажется, что unregisterDataSetObserver на вашем DealPageAdapter вызывается дважды. Чтобы решить эту проблему, я перезаписал unregisterDataSetObserver в моем адаптере как таковой.

@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
    if (observer != null) {
        super.unregisterDataSetObserver(observer);
    }
}

Надеюсь это поможет!

person vm204    schedule 06.01.2012

Есть несколько человек, которые столкнулись с вашей проблемой здесь и Здесь

Глядя на стек вызовов, похоже, что ваше «представление» зарегистрировало наблюдателя, который теперь пытается отменить регистрацию. Этого наблюдателя больше нет, хотя его ждали. Отсюда ошибка. Это может быть ошибка или это может быть связано с тем, как вы делаете что-то.

Пытаюсь просмотреть исходный код Android, чтобы узнать, сможете ли вы его отследить.

Удачи.

person Preston    schedule 03.09.2011