解決IllegalArgumentException:The observer is null 錯誤

今天作了一個通信錄用到了viewpager和expandlistview 共同使用。而後其餘手機還算正常。在4.0.3系統上,會報IllegalArgumentException:The observer is null 錯誤。網上說在listview的adapter內重寫 unregisterDataSetObserver()方法便可。 java

@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」錯誤。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

相關文章
相關標籤/搜索