2012-03-16 52 views
1

閉我寫了一個簡單tabhost例子是如下tabhost Android中示例力模擬器

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <LinearLayout 
     android:id="@+id/linearLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 

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

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

      <LinearLayout 
       android:id="@+id/tab1" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" > 

       <Button 
        android:id="@+id/button1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Button" /> 

       <Button 
        android:id="@+id/button2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Button" /> 

       <TextView 
        android:id="@+id/textView1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Large Text" 
        android:textAppearance="?android:attr/textAppearanceLarge" /> 
      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/tab2" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" > 

       <Button 
        android:id="@+id/button3" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Button" /> 
      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/tab3" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" > 

       <TextView 
        android:id="@+id/tv2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Large Text" 
        android:textAppearance="?android:attr/textAppearanceLarge" /> 
      </LinearLayout> 
     </FrameLayout> 
    </LinearLayout> 

</TabHost> 

這是main.xml中 所以我設置的setContentView到main.xml中

public class AndroidtabhostActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 
} 

它在Android 4.0模擬器中正常工作,但是當我在Android 2.1仿真器上運行它時,它強制關閉這些以ddms爲單位的日誌

03-16 17:19:08.295: E/AndroidRuntime(1579):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1819) 
03-16 17:39:27.016: E/AndroidRuntime(2092): Uncaught handler: thread main exiting due to uncaught exception 
03-16 17:39:27.036: E/AndroidRuntime(2092): java.lang.RuntimeException: Unable to start activity ComponentInfo{banana.com/banana.com.AndroidtabhostActivity}: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost' 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at android.os.Looper.loop(Looper.java:123) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at java.lang.reflect.Method.invoke(Method.java:521) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at dalvik.system.NativeStart.main(Native Method) 
03-16 17:39:27.036: E/AndroidRuntime(2092): Caused by: java.lang.RuntimeException: Your content must have a TabHost whose id attribute is 'android.R.id.tabhost' 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at android.app.TabActivity.onContentChanged(TabActivity.java:105) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at android.app.Activity.setContentView(Activity.java:1622) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at banana.com.AndroidtabhostActivity.onCreate(AndroidtabhostActivity.java:11) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
03-16 17:39:27.036: E/AndroidRuntime(2092):  ... 11 more 

爲什麼會這樣???有人可以請解釋

說,我仍然得到異常

03-16 17:50:03.925: E/AndroidRuntime(2372): Uncaught handler: thread main exiting due to uncaught exception 
03-16 17:50:03.936: E/AndroidRuntime(2372): java.lang.NullPointerException 
03-16 17:50:03.936: E/AndroidRuntime(2372):  at android.widget.TabHost.dispatchWindowFocusChanged(TabHost.java:295) 
03-16 17:50:03.936: E/AndroidRuntime(2372):  at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661) 
03-16 17:50:03.936: E/AndroidRuntime(2372):  at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:661) 
03-16 17:50:03.936: E/AndroidRuntime(2372):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1819) 
03-16 17:50:03.936: E/AndroidRuntime(2372):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-16 17:50:03.936: E/AndroidRuntime(2372):  at android.os.Looper.loop(Looper.java:123) 
03-16 17:50:03.936: E/AndroidRuntime(2372):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
03-16 17:50:03.936: E/AndroidRuntime(2372):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-16 17:50:03.936: E/AndroidRuntime(2372):  at java.lang.reflect.Method.invoke(Method.java:521) 
03-16 17:50:03.936: E/AndroidRuntime(2372):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
03-16 17:50:03.936: E/AndroidRuntime(2372):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
03-16 17:50:03.936: E/AndroidRuntime(2372):  at dalvik.system.NativeStart.main(Native Method) 
+0

擴展TabActivity,如果發生錯誤,然後發佈完整的logcat – 2012-03-16 12:08:32

+0

它仍然給出異常。我在擴展tabactivity而不是activity後更新了日誌問題。仍然問題仍然存在 – Nav 2012-03-16 12:11:34

+0

你也可以嘗試官方的[教程](http://developer.android.com/resources/tutorials/views/hello-tabwidget.html),看看是否有一些差異。 – toto2 2012-03-16 12:33:04

回答

0

我不得不建立一個ATLEAST否則標籤,而4.0處理它沒有說,所以我說這個代碼的setContentView

TabHost th = (TabHost) findViewById(R.id.mytabhost); 
    th.setup(); 
    TabSpec ts = th.newTabSpec("whatevver"); 
    ts.setContent(R.id.tab1); 
    ts.setIndicator("TAB1"); 
    th.addTab(ts); 

後它跑在兩個模擬器罰款就給出了2.1的錯誤。

1

Android的Tabhost是越野車改變,因爲薩米爾後。請檢查我的blog以獲取更多信息以創建制表符

搜索tabhost以立即獲取相應的信息。

+0

謝謝回答檢查 – Nav 2012-03-16 13:14:50

+0

雖然這可能會在理論上回答這個問題,[這將是更可取的](http://meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供鏈接以供參考。 – 2012-04-21 13:23:03