2

myActivityでタブを追加したいときやタブをクリックしたときにフラグメントが作成され追加されました。しかし、タブをクリックしたときにnothngが発生しました。 TabsActivity:タブは表示されません

public class TabsActivity extends FragmentActivity { 

    Fragment directFragmentTab = new Direct(); 
    Fragment adventuresFragmentTab = new AdventuresFragment(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.tabs_activity); 




     TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); 
     tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); 

     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     final ViewPagerAdapter adapter = new ViewPagerAdapter(fragmentManager, tabLayout.getTabCount()) 
       { 
      @Override 
      public int getCount() { 
       return 0; 
      } 

      @Override 
      public boolean isViewFromObject(View view, Object object) { 
       return false; 
      } 
     }; 
     viewPager.setAdapter(adapter); 
     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
     tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       viewPager.setCurrentItem(tab.getPosition()); 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 

      } 
     }); 
    } 

} 

はViewPagerAdapter:?私は間違っていた何

public class ViewPagerAdapter extends FragmentStatePagerAdapter { 
    int mNumOfTabs; 

    public ViewPagerAdapter(FragmentManager fm, int NumOfTabs) { 
     super(fm); 
     this.mNumOfTabs = NumOfTabs; 
    } 



    @Override 
    public android.support.v4.app.Fragment getItem(int position) { 

     switch (position) { 
      case 0: 
       Direct tab1 = new Direct(); 
       return tab1; 
      case 1: 
       AdventuresFragment tab2 = new AdventuresFragment(); 
       return tab2; 


      default: 
       return null; 
     } 
    } 

    @Override 
    public int getCount() { 
     return mNumOfTabs; 
    } 
} 

コードは、私が見逃したロジックでerrror何かせずにコンパイルします。

+0

実際に何が起こっているのかわかりませんが、正しく表示されません。最も簡単な方法は、setupWithViewPager()を使用することです。https://guides.codepath.com/android/google-play-style-tabs-using-tablayout –

+0

check public int getCount(){ return 0 ; }をビューポートアダプタに追加します。カウントを返す必要があります –

+0

それはカウントを返します public int getCount(){ return mNumOfTabs; } – Rost

答えて

1

ViewPagerAdapterのメソッドをオーバーライドしないでください。ただ、

final ViewPagerAdapter adapter = new ViewPagerAdapter(fragmentManager, tabLayout.getTabCount()); 
0

をやっていることは、この

01と同様

final PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount()); 

編集独自のコードと交換してください。この私は同じコードを使用しています

final ViewPagerAdapter adapter = new ViewPagerAdapter(fragmentManager, tabLayout.getTabCount()) 
      { 
     @Override 
     public int getCount() { 
      return 0; 
     } 

     @Override 
     public boolean isViewFromObject(View view, Object object) { 
      return false; 
     } 
    }; 

を試してみてください

TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); final PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount()); viewPager.setAdapter(adapter); viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { viewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } }); 
関連する問題