2017-04-12 53 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); 
    } 
} 
相关问题