2016-09-13 4 views
-2

Ich arbeite an einer App, die Tab-Layout mit 5 Tabs verwenden. Ich muss mehrere Fragmente auf jeder Registerkarte navigieren und das erste Fragment öffnen, wenn der Benutzer die Registerkarte erneut ausgewählt hat. Bitte hilf mir.Registerkarte Tablayout mit mehreren Fragment

TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
     tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.scene_tab_selector)); 
     tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.my_scene_tab_selector)); 
     tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.conversation_tab_selector)); 
     tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.notification_tab_selector)); 
     tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.more_tab_selector)); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     final PagerAdaptor adapter = new PagerAdaptor 
       (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()); 
       tab.getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN); 
       if(tab.getPosition()==4) 
       { 
//     pageTitleLabel.setText("My Profile"); 
       } 
      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 
       tab.getIcon().setColorFilter(Color.parseColor("#a8a8a8"), PorterDuff.Mode.SRC_IN); 

      } 

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


      } 
     }); 

Mein PagerAdaptor ist wie folgt

public class PagerAdaptor extends FragmentStatePagerAdapter { 
    int mNumOfTabs; 


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

    } 

    @Override 
    public Fragment getItem(int position) { 

     switch (position) { 
      case 0: 
       Tab1ContainerFragment tab1 = new Tab1ContainerFragment(); 
       return tab1; 
      case 1: 
       MyCuddllFragment tab2 = new MyCuddllFragment(); 
       return tab2; 
      case 2: 
//    CuddllConversationFragment tab3 = new CuddllConversationFragment(); 
       ConversationFragment conversationFragment = new ConversationFragment(); 
       return conversationFragment; 

      case 3: 
//    CuddllNotificationsFragment tab4 = new CuddllNotificationsFragment(); 
       Tab4ContainerFragment notificationPageFragment = new Tab4ContainerFragment(); 
       return notificationPageFragment; 

      case 4: 
       MyProfileFragment tab5 = new MyProfileFragment(); 
       return tab5; 

      default: 
       return null; 
     } 
    } 

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



} 
+0

Bitte können Sie sagen, was haben Sie bisher versucht? Auch können Sie erwähnen, Probleme, die Sie bei der Implementierung konfrontiert sind, wie oben erwähnt –

+0

Ich habe versucht, Pager und Pager-Adapter. und in jeder Registerkarte wird das erste Fragment geladen. aber jetzt Problem ist das Durchqueren von Fragment in jeder Registerkarte –

+0

Teilen Sie den Code und wir können Ihnen helfen, es zu beheben. –

Antwort

0
public void onTabSelected(TabLayout.Tab tab) { 

      tab.getIcon().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN); 
      if(tab.getPosition()==0) 
      { 
       viewpager.setCurrentItem(0); 
      }else if(tab.getPosition()==1) 
      { 
       viewpager.setCurrentItem(1); 
      }else if(tab.getPosition()==2) 
      { 
       viewpager.setCurrentItem(2); 
      }else if(tab.getPosition()==3) 
      { 
       viewpager.setCurrentItem(3); 
      } 


     } 
+0

Es hilft mir nicht, auf der ersten Seite der Registerkarte zu erreichen. –

+0

können wir auf Facebook kontaktieren –

+0

@VinayakMishra Ich habe eine Bearbeitung vorgenommen. Versuche es jetzt. Entschuldigung, ich war zu müde, als ich das geschrieben habe. –

Verwandte Themen