How to set the second tab is first inTabHost

I am trying to set the 2nd tab load first. So That I am trying like this.

In my MainActivity I extend FragmentActivity.

I initialize the Tabhost Globally.

private TabHost mTabHost;

I call the following method in OnCreate

private void initialiseTabHost() {
        mTabHost = (TabHost) findViewById(android.R.id.tabhost);
        mTabHost.setup();

        // TODO Put here your Tabs str_near_by str_best_offer
        MainActivity.AddTab(
                this,
                this.mTabHost,
                this.mTabHost.newTabSpec("Tab 1").setIndicator(
                        "Tab 1"));
        MainActivity.AddTab(this, this.mTabHost,
                this.mTabHost.newTabSpec("Tab 2").setIndicator("Tab 2"));
        MainActivity.AddTab(
                this,
                this.mTabHost,
                this.mTabHost.newTabSpec("Tab 3").setIndicator(
                        "Tab 3"));
        mTabHost.setCurrentTab(1); // Here I am setting the 2nd tab load first
        mTabHost.setOnTabChangedListener(this);
    }

But I can not set the 2nd tab to load first.

And Also I can not create Options menu.

I add the following code in my MainActivity.

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return true;
    }

But Menu also is not get created. Please help me to resolve these issues.

Upvotes: 0

Views: 155

Answers (1)

Saehun Sean Oh
Saehun Sean Oh

Reputation: 2281

Instead of using a static method, try implement them in onCreate() of MainActivity.

like

public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.activity_main);
    mTabHost = (TabHost) findViewById(android.R.id.tabhost);
    mTabHost.setup();

    // Tab 1
    TabSpec tab1Spec = tabHost.newTabSpec("Tab 1");
    // setting Title and Icon for the Tab
    tab1.setIndicator("Tab 1",getResources()
                      .getDrawable(R.drawable.icons_tab_one));
    Intent tab1Intent = new Intent(this, MainActivity.class);
    tab1Spec.setContent(tab1Intent);

    // Do the same for Tab 1,2 
    ...

    // Add tabs
    mTabHost.addTab(tab1Spec);
    mTabHost.addTab(tab2Spec);
    mTabHost.addTab(tab3Spec);


    mTabHost.setCurrentTab(1); // Now change the default tab
    mTabHost.setOnTabChangedListener(this);
}

For onCreateOptionsMenu(), you need to do something like this PROGRAMICALLY.

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    myActionItem = menu.add(Menu.NONE, AI_ID_blah,
            AI_ID_blah, "My Action Item").setIcon(
            R.drawable.ic_my_action_item);
    myActionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
            | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    // add more items
    ...

    return true;
}

If you want to use XML, you can do following

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

and in menu XML (menu/activity_main.xml)

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/menu_settings" android:orderInCategory="100"   
        android:showAsAction="never" android:title="@string/menu_settings"/>
    <item android:id="@+id/item1" android:title="Option1"></item>
    <item android:id="@+id/item2" android:title="Option2"></item>
    <item android:id="@+id/item3" android:title="Option3"></item>
    <item android:id="@+id/item4" android:title="Option4"></item>
    <item android:id="@+id/item5" android:title="Option5"></item>
    <item android:id="@+id/item6" android:title="Option6"></item>
</menu>

Upvotes: 1

Related Questions