2016-04-22 7 views
0

アクティビティ内にFragmentPagerAdapterのサポート付きで4つのタブ(フラグメント)が4つ付いたtabLayoutがあります。タブレイアウトのナビゲーションビュー、クリック時のナビゲーションビュー項目によるタブ(フラグメント)に移動

添付のナビゲーションビューを使用してタブにナビゲートしたいと考えています。ナビゲーションビューの項目をクリックするとタブを移動する方法。

次に、現在の4つのタブ(タブレイアウトに添付されている)を新しいフラグメントで削除する方法。フラグメントを追加する

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new OfferFragment(), "OFFERS"); 
    adapter.addFragment(new BookedHistoryFragment(), "Booked History"); 
    adapter.addFragment(new ReviewFragment(), "Reviews"); 
    adapter.addFragment(new AvailableRoomFragment(), "Available"); 
    viewPager.setAdapter(adapter); 
} 

サブclassAdapter:フラグメントを添付する

class ViewPagerAdapter extends FragmentPagerAdapter { 
    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); 
    } 
} 

ナビゲーションビューのアクション:

mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
     @Override 
     public boolean onNavigationItemSelected(MenuItem menuItem) { 
      mDrawerLayout.closeDrawers(); 
      if (menuItem.getItemId() == R.id.nav_item_offers) { 
       int tabCount= tabLayout.getTabCount(); 
       // I want to move to other tab. 

       Toast.makeText(getApplicationContext(),"First",Toast.LENGTH_SHORT).show(); 
//     Intent intent = new Intent(getApplicationContext(), Booking.class); 
//     startActivity(intent); 
      } 
      else if (menuItem.getItemId() == R.id.nav_item_avail_room) { 
       // Then I want to remove Four tabs and call a new fragment. 
        Toast.makeText(getApplicationContext(),"Second",Toast.LENGTH_SHORT).show(); 
      } 
      return false; 
     } 

    }); 

答えて

0

ナビゲーションビューで項目をクリックしながら、ジャストタブインデックスを教えてください。コードは以下の通りです。

第2の問題点として、私は新しい活動を開始し、そこに断片を添付しました。

mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
    @Override 
    public boolean onNavigationItemSelected(MenuItem menuItem) { 
     mDrawerLayout.closeDrawers(); 
     if (menuItem.getItemId() == R.id.nav_item_offers) { 
      TabLayout.Tab tab = tabLayout.getTabAt(2); 
      tab.select(); 
     } 
     else if (menuItem.getItemId() == R.id.nav_item_avail_room) { 
      // Here I started a new activity and attached fragment. 
     } 
     return false; 
    } 

}); 
関連する問題