Android Viewpager 使用Listview注意

ViewPager中有个页面包含了ListView。当从ViewPage页面退出应用时报java.lang.IllegalArgumentException: The observer is null.错误。

经调研发现有大神说ViewPager在Android4.0上有兼容性错误

ViewPager在移除View时会调用ListView的unregisterDataSetObserver方法,而ListView本身也会调用该方法,所以在第二次调用时就会报“The observer is null”错误。

解决办法:

复写ListView的Adapter的unregisterDataSetObserver方法,对空指针进行判断即可

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

 

更新:发现Viewpage里嵌套ListView 使用以上方法还是报错,今天看到http://blog.csdn.net/knxw0001/article/details/8980431这篇记录给了很大的启发,当我退出这个activity时在onDestroy里把listview对象清空 才解决此问题

@Override
protected void onDestroy() {
lvNotify.setAdapter(null);
lvNotify = null;
super.onDestroy();
}

 

 

posted on 2013-07-26 16:46  冲锋的路上的兵  阅读(1008)  评论(0编辑  收藏  举报