java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents witho
2017-02-13 14:11
726 查看
最近项目中出现了一个很奇葩的事情,在修改完数据后,调用自定义的notify方法竟然出现error,提示没有执行notify方法,找了很多资料,没发现问题,最后发现一个网站上有人同样碰到过这种问题,借鉴了他的解决思路,目前正在研究其原理,下做个笔记,以防以后会用到。
解决办法就是在执行更新,要对getcount()方法处理一下,在getcount以前先notify一下,感觉应该问题就是出在这里,两边数据不一致导致的问题,遇到同样问题的胖友不仿也试一下。
错误代码
FATAL EXCEPTION: main
Process: com.soufun.app, PID: 32581
java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 3, found: 2 Pager id: com.soufun.app:id/myviewpager Pager class: class com.soufun.app.view.homeslideview.HomeSlideViewPager
Problematic adapter: class com.soufun.app.view.homeslideview.HomeSlideViewPager$1
at android.support.v4.view.ViewPager.populate(ViewPager.java:962)
at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
at android.view.View.measure(View.java:19138)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
at android.view.View.measure(View.java:19138)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
at android.view.View.measure(View.java:19138)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
at android.view.View.measure(View.java:19138)
at android.widget.ListView.setupChild(ListView.java:1991)
at android.widget.ListView.makeAndAddView(ListView.java:1912)
at android.widget.ListView.fillSpecific(ListView.java:1376)
at android.widget.ListView.layoutChildren(ListView.java:1690)
at android.widget.AbsListView.onLayout(AbsListView.java:2201)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2743)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.l
解决方案:
getCount()中添加如下 并及时将值更改:
if(updateData){
updateData =false ;
notifyDataSetChanged();
}
在自己的upadate方法中先执行一下updateData =true;
参考问题:点击这里跳转
解决办法就是在执行更新,要对getcount()方法处理一下,在getcount以前先notify一下,感觉应该问题就是出在这里,两边数据不一致导致的问题,遇到同样问题的胖友不仿也试一下。
错误代码
FATAL EXCEPTION: main
Process: com.soufun.app, PID: 32581
java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 3, found: 2 Pager id: com.soufun.app:id/myviewpager Pager class: class com.soufun.app.view.homeslideview.HomeSlideViewPager
Problematic adapter: class com.soufun.app.view.homeslideview.HomeSlideViewPager$1
at android.support.v4.view.ViewPager.populate(ViewPager.java:962)
at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
at android.view.View.measure(View.java:19138)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
at android.view.View.measure(View.java:19138)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
at android.view.View.measure(View.java:19138)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
at android.view.View.measure(View.java:19138)
at android.widget.ListView.setupChild(ListView.java:1991)
at android.widget.ListView.makeAndAddView(ListView.java:1912)
at android.widget.ListView.fillSpecific(ListView.java:1376)
at android.widget.ListView.layoutChildren(ListView.java:1690)
at android.widget.AbsListView.onLayout(AbsListView.java:2201)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2743)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.layout(ViewGroup.java:5550)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
at android.view.View.layout(View.java:16980)
at android.view.ViewGroup.l
解决方案:
getCount()中添加如下 并及时将值更改:
if(updateData){
updateData =false ;
notifyDataSetChanged();
}
在自己的upadate方法中先执行一下updateData =true;
参考问题:点击这里跳转
相关文章推荐
- java.lang.IllegalStateException: The content of the adapter has changed but
- java.lang.IllegalStateException: The content of the adapter has changed but
- 解决java.lang.IllegalStateException: The application’s PagerAdapter changed the adapter’s content
- java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receiv
- java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive
- java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification
- java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive
- java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive
- java.lang.IllegalStateException:The content of the adapter has changed but ListView did not receiv问题
- java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive
- java.lang.IllegalStateException: The content of the adapter has changed but
- java.lang.IllegalStateException: The content of the adapter has changed but ListView...的问题
- 常见错误之java.lang.IllegalStateException: The application’s PagerAdapter changed the adapter’s cont。。。
- The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDat
- java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this a
- 有关viewPager错误The application's PagerAdapter changed the adapter's contents without calling PagerAdap
- java.lang.IllegalStateException: You need to use a theme.appcompat theme (or descendant) with this activity
- java.lang.IllegalStateException: Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resol
- java.lang.IllegalStateException: The ImageView's ScaleType has been changed
- java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this