是否可以多次在viewpager中使用一個片段?我正在嘗試使用ViewPager構建動態更新的UI。 我想要使用相同的設計,基本上每個頁面具有不同數據的相同片段,如列表視圖適配器。多次在ViewPager中使用一個片段
回答
您可以爲ViewPager中的每個頁面實例化相同的Fragment類,傳遞ViewPager的位置來控制顯示的內容。類似的東西:
public class MyFragment extends Fragment {
private int mIndex;
public MyFragment(int index) {
mIndex = index;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
switch(mIndex){
case 0:
// do you things..
case 1:
// etcetera
}
}
}
那麼,在你FragmentPagerAdapter:
public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
return new MyFragment(position);
}
}
這樣,你可以重用大部分代碼只改變你的開關/ case語句所需要的。
但你不能創建一個片段類的非空構造函數 –
您誤解了class
與object of class
的概念。你MyFragment.java
源代碼定義class
你變成「活物」每次與new
運營商(new MyFragment();
)實例它的時候 - 這將創建object
這是您的class
的instance
。除非你故意避免這種情況(即使用單身模式),你可以根據自己的喜好製作class
的許多instances
,同樣的方法可以製作許多使用單一食譜的蛋糕。這也適用於碎片。
所以只要你創建單獨object
(又名說instance
)您class
每個頁面,你應該能夠做你想做的。
你能否提供一些上述解釋的示例..? – Harsha
- 1. 在viewpager中多次使用一個片段
- 2. 在viewpager中用另一個片段替換一個片段
- 3. 同一片段中的多個ViewPager
- 4. 在ViewPager中使用片段
- 5. ViewPager中另一個片段的片段
- 6. 如何使用viewpager一次創建一個片段
- 7. 在ViewPager的每個屏幕中使用多個片段
- 8. 多佈局viewpager與一個片段
- 9. 在ViewPager中只加載一個片段
- 10. 使用ViewPager保存一個片段與多個視圖
- 11. 在ViewPager中引用片段
- 12. 如何使用ViewPager多次掃描相同的片段?
- 13. 片段中的ViewPager從另一個片段調用Android
- 14. 從另一個片段在viewpager中顯示片段
- 15. ViewPager - 在片段頁面中創建一個新片段
- 16. 可以SharedPreferences.Editor.commit()在同一個活動/片段中多次使用
- 17. 在片段中使用TabLayout和ViewPager
- 18. 在ViewPager中使用視圖或片段
- 19. 如何在片段中使用Viewpager
- 20. ViewPager + FragmentPagerAdapter +每個標籤多個片段
- 21. 從ViewPager中刪除一個片段
- 22. 在viewpager上顯示一個片段
- 23. 如何使用viewpager從tablayout中的另一個片段調用片段
- 24. 使用片段的ViewPager
- 25. 使用viewPager與片段android?
- 26. 使用帶片段的ViewPager
- 27. 使用片段與ViewPager
- 28. 替換ViewPager中另一個片段中的片段
- 29. 實現與片段一ViewPager,只有一個頁面在ViewPager
- 30. 當父活動中存在多個片段時,一次加載一個片段
AFAIK,這是行不通的。您可以使用'GestureDetector'來監視您現有片段上的滑動。 – CommonsWare
順便說一句,澄清,我假設你的意思是你想要使用單個片段*實例* - 如果你的意思是你只想使用一個片段* class *,那就很好。 – CommonsWare