2011-12-16 9 views
7

私が持っている問題であるTabHost持っている必要があります。あなたのコンテンツは、そのID属性 'android.R.id.tabhost'

Javaコードを

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コード

<?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> 

および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) 

問題

それは、理由は誰かが言って私に言うことができ

のid属性 'android.R.id.tabhost' ですTabHostを持っている必要がありますあなたのコンテンツ

android:id = @android:id/tabhost?

+0

プロジェクト全体を再構築しましたか?これらの状況では時には日食がちょっとバグがあります。 – poitroae

+0

あなたのRファイルを削除して再構築してみてください。 – coder

+0

私はプロジェクトをきれいにし、再起動し、Rを削除しようとしましたが、何もしませんでした。私は別のアプリケーションでこのコードを使用しようとしましたが、起動しましたが、この実行ではありません –

答えて

7

Eclipseを使用している場合は、Project > Clean...メニューからビルドをクリーニングしてみてください。シンプルに聞こえますが、しばしばこの問題を解決します。あなたが変更する必要が

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

これをやろうとしましたが、何も変更しません。 –

+3

xmlファイルの名前は 'main.xml'ですか? – silleknarf

+2

番号。それはvisualizzaliste.xmlと呼ばれています(it's italian :)) –

19

私はメッセージがこの意味信じます:id = "@アンドロイド:id/tabhost" "

+2

私は使用しなければなりませんでした:android:id = "@アンドロイド:id/tabhost"なし* – TimothyP

+0

ありがとう。私はTabActivityを使用するので、私のために働いた –

2

だけの事はアンドロイドである:レイアウトXMLのid属性は、それは「アンドロイドである必要があり

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

は、次のように変更します。

1

私は同じ問題がありました。 実際にはをDaAcquistareActivityクラスに拡張しました。これが理由だった。私はTabActivityではなくActivityDaAcquistareActivityを拡張することで問題を解決しました。

0

解決策。 新しいアクティビティチェックに切り替えると、おそらくプライマリからコピーされた反射で、があり、TabActivityがありますが、アクティビティやその他のアクティビティが必要です。

関連する問題