Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 多個viewpager可能產生的問題,多個viewpager產生

多個viewpager可能產生的問題,多個viewpager產生

編輯:關於android開發

多個viewpager可能產生的問題,多個viewpager產生


由於Fragment的方便性,現在很多人開始大量使用Fragment。 今天使用時遇到各問題,記錄下來並分享下。

 

使用Fragment都會用FragmentActivity ,特別是在用到ViewPager時。因為需要FramgmentManager,

而我這次有兩個fragment中都用到了ViewPager。 其實也是開始的時候沒考慮好。然後都使用的FragmentActivity的FramgmentManager去處理。  但是發現在第一個頁面打開後,進入第二個頁面,此時第二個頁面上內容是空的,查看log,第二個頁面的ViewPager 的子view的onCreatView 方法並沒有調用,這是什麼鬼。。

 

百度發現是PagerAdapter的instantiateItem 中使用tag從FramgmentManager中查詢Fragment的,如果找到了,會直接使用之前的,而不會重新創建,

PagerAdapter的tag生成是根據你的pagerID 和 index 生成的。

 

說明什麼呢?說明第一個頁面中存在和第二個頁面相同tag的Fragment 。也就是有兩個fragment具有相同的父id,和index。

index有重復的很好理解,那麼就是說明使用了相同的pagerID。

 

然後想起來當時直接復制的布局文件,所以id相同,改了id,問題迎刃而解。

這個問題在於倆個關鍵的地方:

1.使用了相同的FramgmentManager實例

2. ViewPager的id相同。

 

所以平時使用這種容器類的控件,盡量使id不同,否則就可能產生類似的問題。

 

參考 :http://www.trinea.cn/android/android-source-code-analysis/multi-viewpager-to-fragment-not-init/

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved