2016-10-11 2 views
0

getItem()を使用して3つのタブを切り替えようとしていますが、最初のフラグメントのみが3つのタブに表示されます。私のgetItemコードを以下に示します。androidスタジオのViewPagerAdapterは、3つではなく1つのフラグメントのみを表示します

public class ViewPagerAdapter extends FragmentStatePagerAdapter { 

public ViewPagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public Fragment getItem(int position) { 
    // Which Fragment should be dislpayed by the viewpager for the given position 
    // In my case we are showing up only one fragment in all the three tabs so we are 
    // not worrying about the position and just returning the TabFragment 
    if(position == 0){ 
     TabFragment tab1 = new TabFragment(); 
     return tab1; 
    }else if(position == 1){ 
     InboxFragment tab2 = new InboxFragment(); 
     return tab2; 
    }else { 
     StarFragment tab3 = new StarFragment(); 
     return tab3; 
    } 
} 

@Override 
public int getCount() { 
    return 3;   // As there are only 3 Tabs 
} 

} 
+2

あなたはViewPagerにアダプタを設定していますか? – cuoka

+0

はい........完全なコードを確認してください –

+2

これはアダプタのみですが、どこで使用していますか?私の答えをチェックし、それが役立つかどうかを確認してください。 – cuoka

答えて

1

アダプターをviewPagerに設定していることを確認してください。あなたはこのようなことをするべきです。

ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 

adapter.addFragment(new TabFragment(), "Fragment 1"); 
adapter.addFragment(new InboxFragment(), "Fragment 2"); 
adapter.addFragment(new StarFragment(), "Fragment 3"); 
mViewPager.setAdapter(adapter); 

mTabLayout.setupWithViewPager(mViewPager); 

また、アダプタは次のようになります。

class ViewPagerAdapter extends FragmentStatePagerAdapter 
{ 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) 
    { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) 
    { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() 
    { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) 
    { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) 
    { 
     return mFragmentTitleList.get(position); 
    } 
} 
+0

ありがとうございます –

関連する問題