8

I have a problem:

Java Code

public class VisualizzaListaActivity extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Reusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, DaAcquistareActivity.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("daAcquistare").setIndicator("Da Acquistare").setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent().setClass(this, AcquistatiActivity.class);
    spec = tabHost.newTabSpec("acquistati").setIndicator("Acquistati").setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(0);
}

}

XML code

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"   <-------------- It's 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"
   android:padding="5dp">
    <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"
       android:padding="5dp" />
</LinearLayout>
</TabHost>

And LogCat

12-16 15:26:22.519: E/AndroidRuntime(8262): java.lang.RuntimeException: Unable to start activity ComponentInfo{android.smile.matteo.spesaPRO/android.smile.matteo.spesaPRO.VisualizzaListaActivity}: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'             
12-16 15:26:22.519: E/AndroidRuntime(8262): Caused by: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
12-16 15:26:22.519: E/AndroidRuntime(8262):         at android.smile.matteo.spesaPRO.VisualizzaListaActivity.onCreate(VisualizzaListaActivity.java:13)

Problem

Someone can tell me why it's says

Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'

when the android:id = @android:id/tabhost?

Dalmas
  • 26,409
  • 9
  • 67
  • 80
Matteo Cardellini
  • 876
  • 2
  • 17
  • 41
  • Have you tried rebuilding the whole project? Sometimes eclipse is a bit buggy in those situations – poitroae Dec 16 '11 at 18:23
  • try deleting your R file and rebuilding. – coder Dec 16 '11 at 18:25
  • I tried to clean the project, restart it, and delete R but nothing. I have tried to use this code in another application and it's started but in this dont run – Matteo Cardellini Dec 16 '11 at 18:33
  • 1
    Do you have multiple layout folders? If so, check that every xml layout file have the attribute. – Dalmas Dec 16 '11 at 18:39
  • 1
    @LadaRaider Your comment solved my problem! My project uses a library, both had main.xml in layout, and so I got the missing tabhost error. Deleted the main.xml I didn't need and the problem is fixed, thanks :) – Hermit Apr 11 '12 at 20:06

5 Answers5

20

I believe the message means this:

     <TabHost android:id="@+id/tabhost"

should be changed to:

     <TabHost android:id="@android:id/tabhost"
OneCricketeer
  • 179,855
  • 19
  • 132
  • 245
Rupesh
  • 201
  • 2
  • 2
7

Try cleaning your build from the Project > Clean... menu if you are using Eclipse. Sounds simple but often fixes this problem.

silleknarf
  • 1,219
  • 6
  • 22
2

Only thing you need to change is android:id attribute in layout xml , It should be " android:id="@android:id/tabhost" "

Harinder
  • 21
  • 1
1

I had the same problem. Actually I extended TabActivity for DaAcquistareActivity class. This was the reason. I solved the problem by extending DaAcquistareActivity with Activity and not with TabActivity.

Jomia
  • 3,414
  • 10
  • 46
  • 63
0

Solution. If you're switching to a new Activity check it extends, perhaps on reflex copied from the primary, and there is a TabActivity, but we need Activity or other activity.

A. Nick
  • 21
  • 3