2011-09-03 20 views
10

मेरे ऐप्स में से किसी एक उपयोगकर्ता ने इस त्रुटि की सूचना दी। मैं उलझन में हूं कि इसका मतलब यह है कि इसे कैसे ठीक किया जाए। थोड़ी सी गुगलिंग के बाद ... अभी भी कोई भाग्य नहीं है। किसी ने इसे पहले देखा या इसे ठीक करने का तरीका बताया?java.lang.IllegalArgumentException: पर्यवेक्षक शून्य है

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); 
} 
+0

मैं इस सवाल का जवाब मिल गया [यहाँ।] (Http://stackoverflow.com/questions/8508294/what-is-trigger-this-exception-instance-java-lang-illegalargumentexception-th)। – aheuermann

उत्तर

19

मुझे भी एक ही समस्या हो रही थी और ऐसा लगता है कि आपके DealPageAdapter पर unregisterDataSetObserver को दो बार बुलाया जा रहा है। समस्या मैं ऐसे

के रूप में मेरे एडाप्टर में unregisterDataSetObserver अधिलेखित कर दिया
@Override 
public void unregisterDataSetObserver(DataSetObserver observer) { 
    if (observer != null) { 
     super.unregisterDataSetObserver(observer); 
    } 
} 

आशा इस मदद करता है ठीक करने के लिए!

+0

यह वही है जो मुझे चाहिए! –

+0

धन्यवाद यह काम किया .... बस धन्यवाद आदमी। –

+0

मेरे लिए काम किया, सही !!!!! – TharakaNirmana

1

में कुछ लोग हैं, जो आपकी समस्या Here और Here

पड़ा है कॉल स्टैक यह कैसा दिखता को देख से कर रहे हैं आपका "व्यू" एक पर्यवेक्षक पंजीकृत है कि अब वह पंजीकरण रद्द करने की कोशिश कर रहा है। यह पर्यवेक्षक अब तक अपेक्षा नहीं करता है। इसलिए त्रुटि। यह एक बग हो सकता है या यह आप कैसे काम कर रहे हैं से संबंधित हो सकता है।

यह देखने के लिए कि क्या आप इसे ट्रैक कर सकते हैं, Android Source के माध्यम से देखने का प्रयास कर रहे हैं।

शुभकामनाएं।

0

ListView को लपेटने और अपवाद को पकड़ने का एक वैकल्पिक समाधान है। यह समाधान मेरे लिए काम करता है, और मुझे अभी तक कोई दुष्प्रभाव नहीं मिला है।

 
    public class CustumListView extends ListView {

 public CustumListView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    } 

    @Override 
    protected void onDetachedFromWindow() { 
    try { 
     super.onDetachedFromWindow(); 
    } catch(IllegalArgumentException iae) { 

    } 
    } 
} 

संबंधित मुद्दे