0

Ich habe 2 verschiedene Fragmente erstellt und möchte, dass sie in den 2 Tabs angezeigt werden. Ein Fragment nach dem Drücken der ersten Registerkarte und das andere Fragment nach dem Drücken der zweiten Registerkarte. Nach dem Umschalten zwischen den beiden Registerkarten sollte nur ein Fragment angezeigt werden.Wie starte ich Fragmente nach dem Drücken der Aktionsleiste?

mein erstes Fragment Name „Fragment“ und mein zweites Fragment „fragment2“ genannt

//Hallo ich hätte gerne tabs 
      final ActionBar actionBar = getSupportActionBar(); 
      actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 



      //tab listener 
      ActionBar.TabListener tabListener1 = new ActionBar.TabListener(){ 

       @Override 
       public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 

       } 

       @Override 
       public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 

       } 

       @Override 
       public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 

       } 
      }; 


      // für den zweiten tab 
      ActionBar.TabListener tabListener2 = new ActionBar.TabListener(){ 

       @Override 
       public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 

       } 

       @Override 
       public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 

       } 

       @Override 
       public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 

       } 
      }; 



      //Tabs erstellen 
      actionBar.addTab(actionBar.newTab().setText("Tab Nummer Eins").setTabListener(tabListener1)); 
      actionBar.addTab(actionBar.newTab().setText("Tab Nummer Zwei").setTabListener(tabListener2)); 

Antwort

0

Wenn Sie mit mehr als einem Fragmente kommunizieren FragmentStatePagerAdapter besser verwenden, die auf entsprechende Registerkarte ausgewählt erforderliches Fragment bevölkern werden.

Erstellen Sie zunächst Toolbar, Tablayout, ViewPager in Ihrer XML-Datei. Dann erstellen Sie Fragment und Fragment2.

Fügen Sie diesen Code in Ihre HomeActivity.class

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.list_home)); 
    tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.save)); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

    final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
    final PageAdapter adapter = new PageAdapter 
      (getSupportFragmentManager(), tabLayout.getTabCount()); 
    viewPager.setAdapter(adapter); 
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      Log.i("tag1","on tab"); 
      viewPager.setCurrentItem(tab.getPosition());// passing selected tab position to adapter and getting reuqired fragment 
     } 

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

     } 

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

     } 
    }); 

erstellen Pageadapter so ...

public class PageAdapter extends FragmentStatePagerAdapter { 
int mNumOfTabs; 

public PageAdapter(FragmentManager fm, int NumOfTabs) { 
    super(fm); 

    this.mNumOfTabs = NumOfTabs; 
} 

@Override 
public Fragment getItem(int position) { 

    switch (position) { 
     case 0: 
      Fragment tab1 = new Fragment(); //When click First tab 
      return tab1; 
     case 1: 
      Fragment2 tab2 = new Fragment2(); //When click on second tab 
      return tab2; 
     default: 
      return null; 
    } 
} 

@Override 
public int getCount() { 

    Log.i("tag1","on getcount"); 
    return mNumOfTabs; 
        } 
} 

Hope this Ihnen helfen. Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen.

Verwandte Themen