1

Im try to make customized menu tab for my app, then im found the similiar source with my needed stuf, im combined the code from here source1 and here source2 but when try to running im got FATAL EXCEPTION like this :

06-03 16:30:05.305: E/AndroidRuntime(633): FATAL EXCEPTION: main
06-03 16:30:05.305: E/AndroidRuntime(633): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hynra.seribucandi/com.hynra.seribucandi.CandiAbang}: java.lang.IllegalArgumentException: you must specify a way to create the tab content
06-03 16:30:05.305: E/AndroidRuntime(633):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
06-03 16:30:05.305: E/AndroidRuntime(633):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
06-03 16:30:05.305: E/AndroidRuntime(633):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-03 16:30:05.305: E/AndroidRuntime(633):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
06-03 16:30:05.305: E/AndroidRuntime(633):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-03 16:30:05.305: E/AndroidRuntime(633):  at android.os.Looper.loop(Looper.java:123)
06-03 16:30:05.305: E/AndroidRuntime(633):  at android.app.ActivityThread.main(ActivityThread.java:3683)
06-03 16:30:05.305: E/AndroidRuntime(633):  at java.lang.reflect.Method.invokeNative(Native Method)
06-03 16:30:05.305: E/AndroidRuntime(633):  at java.lang.reflect.Method.invoke(Method.java:507)
06-03 16:30:05.305: E/AndroidRuntime(633):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-03 16:30:05.305: E/AndroidRuntime(633):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-03 16:30:05.305: E/AndroidRuntime(633):  at dalvik.system.NativeStart.main(Native Method)
06-03 16:30:05.305: E/AndroidRuntime(633): Caused by: java.lang.IllegalArgumentException: you must specify a way to create the tab content
06-03 16:30:05.305: E/AndroidRuntime(633):  at android.widget.TabHost.addTab(TabHost.java:202)
06-03 16:30:05.305: E/AndroidRuntime(633):  at com.hynra.seribucandi.CandiAbang.setupTab(CandiAbang.java:55)
06-03 16:30:05.305: E/AndroidRuntime(633):  at com.hynra.seribucandi.CandiAbang.onCreate(CandiAbang.java:36)
06-03 16:30:05.305: E/AndroidRuntime(633):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-03 16:30:05.305: E/AndroidRuntime(633):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
06-03 16:30:05.305: E/AndroidRuntime(633):  ... 11 more

Here the java file

package com.hynra.seribucandi;

import android.app.TabActivity;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.TabHost.TabContentFactory;
import android.widget.TabHost.TabSpec;
import android.content.Intent;
import android.widget.ImageView;


public class CandiAbang extends TabActivity {
    final static String INFO = "Info";
    final static String MAP = "Map";
    final static String GALL = "Gallery";

    private TabHost tabHost;
    private void setupTabHost() {
        tabHost = (TabHost) findViewById(android.R.id.tabhost);
        tabHost.setup();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.c_abang);

        setupTabHost();
        tabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider);

        setupTab(new TextView(this), "INFO");
        setupTab(new TextView(this), "MAP");
        setupTab(new TextView(this), "GALL");
        tabHost.setCurrentTab(0);

    }


    private void setupTab(final View view, final String tag) {
        View tabview = createTabView(tabHost.getContext(), tag);
        TabSpec setContent = tabHost.newTabSpec(tag).setIndicator(tabview);

        if(tag.equals(INFO))
            setContent.setContent(new Intent(this, AbangInfo.class));
        else if(tag.equals(MAP))
            setContent.setContent(new Intent(this, AbangMap.class));
        else if(tag.equals(GALL))
            setContent.setContent(new Intent(this, AbangGall.class));

        tabHost.addTab(setContent);

        }

    private static View createTabView(final Context context, final String text) {
    View view = LayoutInflater.from(context).inflate(R.layout.tab2_bg, null);
    TextView tv = (TextView) view.findViewById(R.id.tabsText);
    tv.setText(text);
    return view;
    }



}

And this for the Layout file

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            >
            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                />
              <FrameLayout
                    android:id="@android:id/tabcontent"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    /> 
        </LinearLayout>
    </TabHost>
</LinearLayout>

For the background selector im using this :

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/tab2_selector"
    android:padding="10dip"
    android:gravity="center"
    android:orientation="vertical"
    >
    <ImageView
        android:id="@+id/tabsImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <TextView
        android:id="@+id/tabsText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title"
        android:textSize="12dip"
        android:textColor="@drawable/tab2_text"
        /> </LinearLayout>

When im running, i just got exception warning : you must specify a way to create the tab content how can i solved this problem ? help me. Thanks before

user2285197
  • 33
  • 2
  • 9
  • I had this problem, too, but after adding setIndicator as indicated in this post http://stackoverflow.com/questions/14674881/cant-find-the-cause-you-must-specify-a-way-to-create-the-tab-indicator , I was able to get it to run w/o the error. –  Jul 22 '13 at 17:12
  • This might help: http://stackoverflow.com/questions/19324352/android-fragmenttabhost-java-lang-illegalargumentexception-you-must-specify – SpyZip Jan 22 '14 at 09:58

0 Answers0