在貿易通項目,報以下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.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内容的時候,造成了完全不必要的開銷。