user3833308
user3833308

Reputation: 1212

android : tabhost not rendering tabs

I have a simple activity

public class MainActivity extends Activity {
    private TabHost tabHost;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        tabHost = (TabHost)findViewById(R.id.tabHost);
        tabHost.setup();
        tabHost.newTabSpec("a");
        tabHost.newTabSpec("b");
        tabHost.newTabSpec("c");
    }



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

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

this is xml for its view definition

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="activities.MainActivity"
    android:visibility="visible">

    <TabHost
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tabHost"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical">

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:visibility="visible"
                android:background="#ff0007ff"></TabWidget>

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">

                <LinearLayout
                    android:id="@+id/tab1"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:orientation="vertical"
                    android:visibility="visible"
                    android:background="#ff122dff"></LinearLayout>

                <LinearLayout
                    android:id="@+id/tab2"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:orientation="vertical"></LinearLayout>

                <LinearLayout
                    android:id="@+id/tab3"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:orientation="vertical"></LinearLayout>
            </FrameLayout>
        </LinearLayout>
    </TabHost>

</RelativeLayout>

I understand the view for tabhost has blank content but I expected view of atleast tabs being rendered when this activity gets launched

however I see a blank screen for this activity, what am I missing ?

enter image description here

Upvotes: 1

Views: 695

Answers (2)

Ali
Ali

Reputation: 1915

tabs are implemented using Fragments. In xml, instead of TabHost you need to use android.support.v4.app.FragmentTabHost class. In java you need to extend FragmentActivity and also need to add tabs in FragmentTabHost manually. complete example is given here.

Upvotes: 0

thuongnh.uit
thuongnh.uit

Reputation: 161

You have to add each tab item to the tab widget as below:

tabHost = (TabHost)findViewById(R.id.tabHost);
tabHost.setup();

TabHost.TabSpec tab1 = tabs.newTabSpec("tab1");
tab1.setContent(R.id.tab1);
tab1.setIndicator("Tab 1");
tabHost.addTab(tab1);

Upvotes: 1

Related Questions