2016-04-22 6 views
0

Ich habe eine TabLayout mit 4 vier Registerkarten (Fragmente) mit der Unterstützung von FragmentPagerAdapter in der Aktivität angefügt.Navigationsansicht mit Registerkartenlayout, gehe zu einer Registerkarte (Fragment) durch Navigationsansicht Element auf Klick

Ich möchte mithilfe der angehängten Navigationsansicht zu Registerkarten navigieren. Wie gehe ich auf die Tabs, wenn ich auf die Elemente in der Navigationsansicht klicke.

Dann, wie die aktuellen vier Registerkarten (die mit tablayout verbunden ist) mit neuen Fragment zu entfernen.

Zum Befestigen Fragmente:

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

Sub classAdapter, um die Fragmente hinzuzufügen.

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

Navigationsansicht Aktionen:

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

    }); 

Antwort

0

einfach die Registerkarte Index sagen, während das Produkt in der Navigationsansicht klicken. Der Code ist unten.

Für das zweite Problem begann ich die neue Aktivität und fügte Fragmente hinzu.

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

});