今天作了一个通信录用到了viewpager和expandlistview 共同使用。而后其余手机还算正常。在4.0.3系统上,会报IllegalArgumentException:The observer is null 错误。网上说在listview的adapter内重写 unregisterDataSetObserver()方法便可。
java
2 |
public void unregisterDataSetObserver(DataSetObserver observer) { |
4 |
super .unregisterDataSetObserver(observer); |
恩。试过了。若是是普通的listview的话,直接复写上边方法便可解决问题。话说是因为 viewpager在移除View时会调用ListView的unregisterDataSetObserver方法,而ListView自己也会调用该方法,因此在第二次调用时就会报“The observer is null”错误。android
可是,上述方法,不能解决viewpager与expandlistview的结合显示。这时候,咱们须要重写expandlistviewide
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会抛此异常!google