2011-12-16 14 views
7

Tôi có một vấn đề:Nội dung của bạn phải có một TabHost có thuộc tính id là 'android.R.id.tabhost'

Java Mã

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); 
} 

} 

mã 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> 

Và 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) 

Vấn đề

Ai đó có thể cho tôi biết tại sao nó nói

Nội dung của bạn phải có một TabHost có thuộc tính id là 'android.R.id.tabhost'

khi android: id = @android: id/tabhost?

+0

Bạn đã thử xây dựng lại toàn bộ dự án chưa? Đôi khi nhật thực là một chút lỗi trong những tình huống đó – poitroae

+0

hãy thử xóa tệp R của bạn và xây dựng lại. – coder

+0

Tôi đã cố gắng dọn dẹp dự án, khởi động lại và xóa R nhưng không có gì. Tôi đã cố gắng sử dụng mã này trong một ứng dụng khác và nó bắt đầu nhưng trong này không chạy –

Trả lời

7

Hãy thử làm sạch tòa nhà của bạn từ trình đơn Project > Clean... nếu bạn đang sử dụng Eclipse. Nghe có vẻ đơn giản nhưng thường khắc phục vấn đề này.

+0

Tôi đã cố thực hiện điều này nhưng không thay đổi gì cả –

+3

Tệp xml của bạn có tên là 'main.xml' không? – silleknarf

+2

không. nó được gọi là visualizzaliste.xml (It's italian :)) –

19

Tôi tin rằng thông điệp có nghĩa này:

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

nên được thay đổi:

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

Tôi đã phải sử dụng: android: id = "@ android: id/tabhost" mà không có * – TimothyP

+0

Cảm ơn. Làm việc cho tôi, bởi vì tôi sử dụng TabActivity –

2

Chỉ có điều bạn cần thay đổi là android: id thuộc tính trong cách bố trí xml, Nó sẽ được "android : id = "@ android: id/tabhost" "

1

Tôi gặp vấn đề tương tự. Thực ra tôi đã mở rộng TabActivity cho lớp học DaAcquistareActivity. Đây là lý do. Tôi đã giải quyết vấn đề bằng cách mở rộng DaAcquistareActivity với Activity và không phải với TabActivity.

0

Giải pháp. Nếu bạn đang chuyển sang Kiểm tra hoạt động mới mở rộng, có lẽ trên phản xạ được sao chép từ chính, và có TabActivity, nhưng chúng tôi cần Hoạt động hoặc hoạt động khác.

Các vấn đề liên quan