我指的是link for swipeable tabs using fragments。它適用於我,但如果我需要動態添加選項卡數量而不預先指定選項卡數量呢?舉例來說,我的一些邏輯給了我有時在anarray的2個字符串中輸出,有時在數組中的4個字符串。根據邏輯,我需要在運行時在操作欄中設置選項卡的數量。我怎樣才能做到這一點?任何人都可以告訴我如何實現我所需要的?如何在運行時動態設置動作欄中帶有碎片的可滑動選項卡的數量
2
A
回答
4
STEP 1:
定義你的TabsPagerAdapter
如下:
public class TabsPagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> list;
public TabsPagerAdapter(FragmentManager fm, ArrayList<Fragment> list) {
super(fm);
this.list = list;
}
@Override
public Fragment getItem(int index) {
return list.get(index);
}
@Override
public int getCount() {
return list.size();
}
}
STEP 2:
當你在運行時確定的選項卡的數量,首先要確保創建所需數量爲Fragment
s的List
。
ArrayList<Fragment> list = new ArrayList<Fragment>();
for(int i = 0; i < tabcount; i++){
list.add(MyFragment.newInstance());
}
OR這:
ArrayList<Fragment> list = new ArrayList<Fragment>();
list.add(new GamesFragment());
list.add(new TopRatedFragment());
list.add(new MoviesFragment());
STEP 3:
當您創建爲ViewPager
的Adapter
,通過您可以使用這做的ArrayList
在構造函數TabsPagerAdapter
中爲210秒:
TabsPagerAdapter adapter = new TabsPagerAdapter(fm, list);
試試這個。這將工作。
2
在你Adapter
化妝方法addTab
,是這樣的:
private final ArrayList<TabInfo> tabs = new ArrayList<TabInfo>();
public void addTab(String tabName, Class<?> clss, Bundle args)
{
TabInfo info = new TabInfo(clss, tabName);
tabs.add(info);
notifyDataSetChanged();
}
... ...
static final class TabInfo
{
private final Class<?> clss;
private final String title;
TabInfo(Class<?> _class, String _title)
{
clss = _class;
title = _title;
}
和你的方法getCount
:
@Override
public int getCount(){
return tabs.size();
}
所有的碎片/標籤應該由addTab
添加:
mAdapter.addTab(getResources().getString(R.string.tab_name), YourFragment.class, null);
+0
YourFragment.class代表什麼?它是否是我的MainActivity,它擴展了FragmentActivity或其他東西? – 2015-02-26 09:37:02
+1
每個標籤對應一個片段,對嗎?所以當你添加一個標籤時,自然也要添加一個片段 – Xcihnegn 2015-02-26 10:07:05
相關問題
- 1. 在滑動選項卡操作欄中開始新的片段
- 2. Android可滾動選項卡+滑動時刷卡狀態
- 3. 如何使用滑動選項卡和ViewPager設置片段ID?
- 4. 帶有碎片的動態方法
- 5. 帶有RichTextbox的Wpf動態選項卡
- 6. 可移動和可替換的選項卡,碎片和ActionBar
- 7. 帶有ActionBarSherlock和頂部導航欄碎片的選項卡
- 8. 帶有靜態和動態碎片的活動佈局?
- 9. 如何設置Android操作欄選項卡滾動樣式
- 10. 帶有ActionBar選項卡的可滑動ViewPager(空對象參考)
- 11. 如何爲選項卡式活動設置不同的動作
- 12. 在TabLayout中滑動選項卡時不刷新的片段
- 13. 帶滑動菜單的動作欄Sherlok?
- 14. RecyclerView.Adapter帶動態內容的可打開的可滑動片段
- 15. 頂部帶有圖像的動作欄選項卡 - android
- 16. 方向更改時的動作欄選項卡片段
- 17. 如何禁用碎片的操作欄選項卡?
- 18. 如何在碎片中添加可滑動的標籤?
- 19. 如何在片段中創建2個滑動選項卡?
- 20. 帶動態頁面的jQuery選項卡
- 21. Android選項卡欄在非選項卡活動中可見
- 22. 動態碎片中的運行時異常
- 23. 片段在行動欄選項卡片段?
- 24. 帶有碎片/動作條的Android應用程序:啓動完成時如何運行代碼?
- 25. 如何在angularjs中使用ui bootstrap選項卡的動態活動選項卡?
- 26. 在運行時動態設置XML URI - XSLT選項
- 27. 動態選項卡@運行時並在其中創建控件
- 28. 操作欄和導航抽屜 - 帶活動/片段的滑動操作欄
- 29. 如何在動作欄刷卡選項卡中有不同的圖標按鈕?
- 30. 在帶有動態內容的新選項卡中打開
MyFragment在for循環中代表什麼?它是我的MainActivity片段還是別的嗎? – 2015-02-26 09:29:16
'MyFragment'是'ViewPager'所擁有的'Frament'的類...在這個例子中,你已經鏈接了'ViewPager'中的'Fragment'是'GamesFragment','TopRatedFragment'等。你能理解這個嗎? – 2015-02-26 09:41:37
那麼保持我的ViewPager的片段是MainActivity按照擴展FragmentActivity類的例子。如果我在代碼中給MainActivity代替了MyFragment,它會在newInstance()下面給我提供錯誤,並說未爲MainActivity定義newInstance()方法。作爲一名新手,你能不能更多地表達自己的意見? – 2015-02-26 09:49:09