标签:fragmentpageradapter getcount() notifydatasetchanged
在贸易通项目,报以下FC
08-21 09:56:21.515: E/AndroidRuntime(1629): java.lang.IllegalStateException: The application‘s PagerAdapter changed the adapter‘s contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 2, found: 50000 Pager id: com.example.dianzikouanv1:id/pager_banner Pager class: class android.support.v4.view.ViewPager Problematic adapter: class com.example.dianzikouanv1.fragment.HomeFragment$BannerPagerAdapter
08-21 09:56:21.515: E/AndroidRuntime(1629): at android.support.v4.view.ViewPager.populate(ViewPager.java:966)
说是没有notifyDataSetChanged,但是对比原来项目该notifyDataSetChanged都写了。在报错fragment打log
发现每次getCount改变就挂
08-21 09:56:21.200: E/HomeFragment(1629): BannerPagerAdapter_getCount()_offLine
08-21 09:56:21.201: E/HomeFragment(1629): BannerPagerAdapter_getCount()_offLine
08-21 09:56:21.233: E/HomeFragment(1629): BannerPagerAdapter_getCount()_offLine
08-21 09:56:21.233: E/HomeFragment(1629): BannerPagerAdapter_getCount()_offLine
08-21 09:56:21.420: E/HomeFragment(1629): onPageScrolled--1_0.0_0
08-21 09:56:21.500: E/HomeFragment(1629): initBannerMessage()
08-21 09:56:21.505: E/HomeFragment(1629): BannerPagerAdapter_getCount()_onLine
08-21 09:56:21.515: E/AndroidRuntime(1629): FATAL EXCEPTION: main
上网找资料,发现一段:
“
这不是PagerAdapter中的Bug,通常情况下,调用notifyDataSetChanged方法会让ViewPager通 过Adapter的getItemPosition方法查询一遍所有child view,这种情况下,所有child view位置均为POSITION_NONE,表示所有的child view都不存在,ViewPager会调用destroyItem方法销毁,并且重新生成,加大系统开销,并在一些复杂情况下导致逻辑问题。特别是对于 只是希望更新child view内容的时候,造成了完全不必要的开销。
”
考虑,是否多处引用了FragmentPagerAdapter,造成的冲突。
找到本项目中另外一个之前修改的继承FragemtnPagerAdapter的内部类,把它独立写一个class,
关于在项目中多个类继承FragmentPagerAdapter时,改变getCount(),FC的问题解决
标签:fragmentpageradapter getcount() notifydatasetchanged
原文地址:http://1137907860.blog.51cto.com/10452906/1686738