简体   繁体   中英

Android: Replacing fragments inside tabs

So I am trying to have a screen with three fragments in different tabs, and on one of them have them switch to be another fragment, but I am unable to figure out how I could do this. I have looked at other similar questions, however, I cannot seem to get them working. So if someone could help me exactly figure it out that would be great.

My tabsadapter is this

public class Tabsadapter extends FragmentStatePagerAdapter {

    private int TOTAL_TABS = 3;

    public Tabsadapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int index) {
        switch (index) {
            case 0:
                return new fragment1();

            case 1:
                return new fragment2();

            case 2:
                return new fragment3();

        return null;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
    return TOTAL_TABS;
    }

}

and my main is this:

public class main extends ActionBarActivity implements android.support.v7.app.ActionBar.TabListener {

    private ViewPager tabsviewPager;
    private ActionBar mActionBar;
    private Tabsadapter mTabsAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tabsviewPager = (ViewPager) findViewById(R.id.tabspager);

        mTabsAdapter = new Tabsadapter(getSupportFragmentManager());

        tabsviewPager.setAdapter(mTabsAdapter);

        getSupportActionBar().setHomeButtonEnabled(false);
          getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        Tab tab1 = getSupportActionBar().newTab().setText("Month").setTabListener(this);
        Tab tab2 = getSupportActionBar().newTab().setText("Week").setTabListener(this);
        Tab tab3 = getSupportActionBar().newTab().setText("Day").setTabListener(this);

        getSupportActionBar().addTab(tab2);
        getSupportActionBar().addTab(tab2);
        getSupportActionBar().addTab(tab3);

        tabsviewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                // TODO Auto-generated method stub
                getSupportActionBar().setSelectedNavigationItem(position);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
    }

    @Override
    public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
    }

    @Override
    public void onTabSelected(Tab selectedtab, FragmentTransaction arg1) {
        tabsviewPager.setCurrentItem(selectedtab.getPosition()); //update tab position on tap
    }

    @Override
    public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {
    }
}

Any help anyone can provide would be greatly appreciated. Thanks!

On Android Studio, you can create automatically the code for this :

  • Right click on a folder of your project, choose New -> Tabbed Activity.
  • Choose the navigation style. (ActionBarTabs if I understood you well)
  • Change other fields if needed
  • Click finish

You now have a brand new Tabbed Activity to use :)

You can read the generated code if you want to understand how it works.

Please ask me if you need any help.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM