我必須製作包含3項活動的項目。第一和第二項活動由2個選項卡組成,而第三項活動需要3個選項卡。我是否需要爲每個活動製作3個傳呼機類別?或者如果一個Pager.class可以處理所有選項卡,那麼我們可以如何排序? 感謝所有提前!如果我們想要在多個活動中添加選項卡,我們是否需要多個Pager(viewpager)類?
0
A
回答
0
您可以使用相同的PagerAdapter
類。以下是一個樣本PagerAdapter
。
TabsPagerAdapter.java
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class TabsPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public TabsPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFrag(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
從你FirstActivity.java
:
TabLayout mTabLayout;
ViewPager mViewPager;
TabsPagerAdapte mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
// Tab layout
mTabLayout = (TabLayout) findViewById(R.id.tabs);
// View pager
mViewPager = (ViewPager) findViewById(R.id.view_pager);
// Adapter
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
// 2 Tabs
mAdapter.addFrag(new FragmentOne(), "ONE");
mAdapter.addFrag(new FragmentTwo(), "TWO");
mViewPager.setAdapter(mAdapter);
mTabLayout.setupWithViewPager(mViewPager);
mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
從你SecondActivity.java
:
TabLayout mTabLayout;
ViewPager mViewPager;
TabsPagerAdapte mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
// Tab layout
mTabLayout = (TabLayout) findViewById(R.id.tabs);
// View pager
mViewPager = (ViewPager) findViewById(R.id.view_pager);
// Adapter
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
// 2 Tabs
mAdapter.addFrag(new FragmentOne(), "ONE");
mAdapter.addFrag(new FragmentTwo(), "TWO");
mViewPager.setAdapter(mAdapter);
mTabLayout.setupWithViewPager(mViewPager);
mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
從你ThirdActivity.java
:
TabLayout mTabLayout;
ViewPager mViewPager;
TabsPagerAdapte mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
// Tab layout
mTabLayout = (TabLayout) findViewById(R.id.tabs);
// View pager
mViewPager = (ViewPager) findViewById(R.id.view_pager);
// Adapter
mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
// 3 Tabs
mAdapter.addFrag(new FragmentOne(), "ONE");
mAdapter.addFrag(new FragmentTwo(), "TWO");
mAdapter.addFrag(new FragmentThree(), "THREE");
mViewPager.setAdapter(mAdapter);
mTabLayout.setupWithViewPager(mViewPager);
mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
希望這將有助於〜
0
您可以使用相同的類。只要確保你的重寫方法可以區分它在哪個活動中。所以getCount()
在FragmentPagerAdapter
作爲一個例子會在你的第一和第二個活動中返回兩個,而在第三個活動中返回三個。佈局也一樣。
0
是的,你可以爲每個活動使用這個pageradapter類。它會創建您想要的活動的大小
public class ExamplePagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ExamplePagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
public void addFragment(Fragment fragment) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
}
相關問題
- 1. 如果我們需要支持多個平臺,我們是否需要restclient
- 2. 我們是否需要將主鍵添加到多列索引?
- 3. 我們能否用在多個活動
- 4. 當我們需要多個EntityManager?
- 5. 我們是否需要ezpublish_legacy?
- 6. xcdatamodel的多個版本是否意味着我們需要多個xcmappingmodel文件?
- 7. 我需要多少活動?
- 8. 我們是否需要在UIScrollView iOS 6+
- 9. 我們爲什麼要使用`realloc`如果我們需要一個'TMP buffer`
- 10. 如果我們在docker上使用wordpress,我們是否需要安裝apache&PHP?
- 11. 如果我們正在同步讀取,我們是否需要同步寫入?
- 12. 如果我們在modules.conf中添加或刪除模塊,我們是否需要重新安裝所有內容?
- 13. 爲什麼我們需要Android項目的多個清單?
- 14. 我們是否需要在heroku上添加security.yml進行部署?
- 15. 我們是否需要同步add()方法這個類?
- 16. 如果我只需要1個物業(目前),我是否需要一個類?
- 17. 如果我只是需要一個webview,PhoneGap是否太多?
- 18. 我們是否需要在Java中初始化一個數組?
- 19. 我們是否需要爲每個用戶啓動卡夫卡,如果以root身份啓動
- 20. 當我們移動到下一個標籤頁時,jquery ui選項卡需要清空前一個選項卡
- 21. 如果我們使用ForkJoinPool框架的Recursiveaction,我們是否需要調用join()?
- 22. 我們是否需要解決ConcurrentModificationException?
- 23. 我們是否需要更新Orbeon?
- 24. 我們是否需要取消按鈕?
- 25. 我們是否需要更改標題?
- 26. 我們是否需要關閉file_get_contents?
- 27. 我們是否需要分區器?
- 28. 選項卡顯示默認值,需要顯示我們選擇的選項卡
- 29. 我們是否需要有關清單中活動類的額外信息?
- 30. 當我們使用xchg時,我們是否需要防護
我在Android的新工作室,因爲我初中!我想知道,我必須添加我的片段?如何??因爲你的代碼和我的代碼幾乎一樣,但我試圖弄清楚在哪裏添加片段?在「addFragment」函數中?尋呼機類的?如果是的話那怎麼樣? – Uzair
從您的活動onCreate()方法中,您可以使用adapter.addFrag()方法將片段添加到viewpager >>> // 2選項卡 mAdapter.addFrag(new FragmentOne(),「ONE」); mAdapter.addFrag(new FragmentTwo(),「TWO」);請看我的回答 – FAT
謝謝你這麼多。這有助於Alot! – Uzair