Java – How Android Tab Layout starts with a second tab

How Android Tab Layout starts with a second tab… here is a solution to the problem.

How Android Tab Layout starts with a second tab

Hi, I’m following this graph
http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/

I want the app to start with the “Games” tab, not the “Top Rated tab”! Can you help me 🙂

Here is my code

package com.scorebeyond.android.tabswithswipeexample;

import com.scorebeyond.android.tabswithswipeexample.adapter.TabsPagerAdapter;

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.Menu;

public class MainActivity extends FragmentActivity implements TabListener {

private ViewPager viewPager;
    private TabsPagerAdapter mAdapter;
    private ActionBar actionBar;

 Tab Titles
    private String[] tabs = { "Top Rated", "Games", "Movies" };

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

 Initialize
        viewPager = (ViewPager) findViewById(R.id.pager);
        viewPager.setCurrentItem(-1);
        actionBar = getActionBar();
        mAdapter = new TabsPagerAdapter(getSupportFragmentManager());

viewPager.setAdapter(mAdapter);
        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

 Adding Tabs
        for (String tab_name : tabs) {

actionBar.addTab(actionBar.newTab().setText(tab_name)
                    .setTabListener(this));

}

viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

@Override
            public void onPageSelected(int position) {
                 on changing the page
                 make respected tab selected

actionBar.setSelectedNavigationItem(position);

}

@Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                 TODO Auto-generated method stub

}

@Override
            public void onPageScrollStateChanged(int arg0) {
                 TODO Auto-generated method stub

}
        });

}

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
         Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

@Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
         TODO Auto-generated method stub

}

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

 On tab selected
         show respected fragment view

viewPager.setCurrentItem(tab.getPosition());

}

@Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {
         TODO Auto-generated method stub

}

}

Thank you very much

Solution

You should use (at the end of your onCreate method):

action bar selectTab method uses the tab you added earlier as a parameter

or

Use Action Bar setSelectedNavigationItem Selects a label item by location

actionBar.setSelectedNavigationItem(1);

Related Problems and Solutions