2017-04-12 41 views

回答

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

我在Android的新工作室,因爲我初中!我想知道,我必須添加我的片段?如何??因爲你的代碼和我的代碼幾乎一樣,但我試圖弄清楚在哪裏添加片段?在「addFragment」函數中?尋呼機類的?如果是的話那怎麼樣? – Uzair

+0

從您的活動onCreate()方法中,您可以使用adapter.addFrag()方法將片段添加到viewpager >>> // 2選項卡 mAdapter.addFrag(new FragmentOne(),「ONE」); mAdapter.addFrag(new FragmentTwo(),「TWO」);請看我的回答 – FAT

+0

謝謝你這麼多。這有助於Alot! – Uzair

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); 
    } 
} 
相關問題