kvel
kvel

Reputation: 497

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!

Upvotes: 1

Views: 121

Answers (1)

victorleduc
victorleduc

Reputation: 232

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.

Upvotes: 2

Related Questions