2016-04-22 51 views
0

我有一個帶有4個選項卡(片段)的tabLayout,並且在活動內部支持FragmentPagerAdapter。帶有選項卡布局的導航視圖,通過點擊導航視圖項目轉到選項卡(片段)

我想使用附加的導航視圖導航到選項卡。當我點擊導航視圖中的項目時如何去標籤。

然後如何刪除當前的四個選項卡(這是與tablayout附加)與新的片段。

附加片段:

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

只要告訴選項卡索引,同時單擊導航視圖的項目。代碼如下。

對於第二個問題,我開始了新的活動並在其中附加了片段。

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; 
    } 

});