user3385655
user3385655

Reputation:

Problems with setting up tabs using Tabhost in Android?

So, i was following the NewBoston series on Android tutorials. So, there is this tutorial on setting up tabs using Tabhost and Tabspecs. Now, i tried exactly what the tutorial does but crashes and it points to a particular line in my code which is setContentView() method in the OnCreate(). I tried even removing it and ran the code but the program just crashes. What could be my mistake? I also tried the code in the following article to see if that works but it still crashes. http://www.learn-android-easily.com/2013/07/android-tabwidget-example.html

This is my code-

Splash.java is the class that starts up the Launcher activity

public class Splash extends TabActivity {
    TabHost th;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        th = (TabHost)findViewById(R.id.tabHost2);
        TabHost.TabSpec tab1 = th.newTabSpec("First Tab");
        TabHost.TabSpec tab2 = th.newTabSpec("Second Tab");
        TabHost.TabSpec tab3 = th.newTabSpec("Third tab");

        tab1.setIndicator("Tab1");
        tab1.setContent(new Intent(this,TabActivity1.class));

        tab2.setIndicator("Tab2");
        tab2.setContent(new Intent(this, TabActivity2.class));

        tab3.setIndicator("Tab3");
        tab3.setContent(new Intent(this, TabActivity3.class));


        th.addTab(tab1);
        th.addTab(tab2);
        th.addTab(tab3);

    }
}

TabActivity1.java-

public class TabActivity1 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv=new TextView(this);
        tv.setTextSize(25);
        tv.setGravity(Gravity.CENTER_VERTICAL);
        tv.setText("This Is Tab1 Activity");

        setContentView(tv);
    }
}

TabActivity2.java:-

public class TabActivity2 extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv=new TextView(this);
        tv.setTextSize(25);
        tv.setGravity(Gravity.CENTER_VERTICAL);
        tv.setText("This Is Tab2 Activity");

        setContentView(tv);
    }
}

TabActivity3.java

public class TabActivity3 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv=new TextView(this);
        tv.setTextSize(25);
        tv.setGravity(Gravity.CENTER_VERTICAL);
        tv.setText("This Is Tab3 Activity");

        setContentView(tv);
    }
}

splash.xml

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TabHost
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tabHost2"
        android:layout_gravity="center_horizontal">

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

            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"></TabWidget>

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

                <LinearLayout
                    android:id="@+id/linearLayout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical"></LinearLayout>

                <LinearLayout
                    android:id="@+id/linearLayout2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical"></LinearLayout>

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

enter image description here

Upvotes: 0

Views: 42

Answers (1)

DGN
DGN

Reputation: 702

Change this line

th = (TabHost)findViewById(R.id.tabHost2);

to

th = (TabHost)findViewById(android.R.id.tabHost2);

This will do.

Because, in the layout file, you might have set Tabhost id like this android:id="@android:id/tabhost2">

Upvotes: 1

Related Questions