您的位置:首页 > 编程语言 > PHP开发

关于在项目中多个类继承FragmentPagerAdapter时,改变getCount(),FC的问题解决

2015-08-21 10:11 1001 查看
在贸易通项目,报以下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