码迷,mamicode.com
首页 > 其他好文 > 详细

解决IllegalArgumentException:The observer is null 错误

时间:2014-08-05 19:43:00      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:android   style   http   color   java   使用   os   io   

今天做了一个通讯录用到了viewpager和expandlistview 共同使用。然后其他手机还算正常。在4.0.3系统上,会报IllegalArgumentException:The observer is null 错误。网上说在listview的adapter内重写 unregisterDataSetObserver()方法即可。

@Override
2  public void unregisterDataSetObserver(DataSetObserver observer) {
3   if(observer != null){
4    super.unregisterDataSetObserver(observer);
5   }
6  }

恩。试过了。如果是普通的listview的话,直接复写上边方法即可解决问题。话说是由于 viewpager在移除View时会调用ListView的unregisterDataSetObserver方法,而ListView本身也会调用该方法,所以在第二次调用时就会报“The observer is null”错误。

    但是,上述方法,不能解决viewpager与expandlistview的结合显示。这时候,我们需要重写expandlistview

public class MyExpandListView extends ExpandableListView {    public MyExpandListView(Context context, AttributeSet attrs) {      super(context, attrs);    }    @Override    protected void onDetachedFromWindow() {      try {        super.onDetachedFromWindow();      } catch(IllegalArgumentException iae) {        // Workaround for http://code.google.com/p/android/issues/detail?id=22751      }    } }

然后在xml布局文件里引用相关控件即可。viewpager与expandlistview结合使用的时候要注意这一点,其他系统版本没事,只有4.0.3会抛此异常!

解决IllegalArgumentException:The observer is null 错误,布布扣,bubuko.com

解决IllegalArgumentException:The observer is null 错误

标签:android   style   http   color   java   使用   os   io   

原文地址:http://my.oschina.net/u/1014842/blog/298182

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!