Java Android中另一个选项卡内的选项卡(使用片段)

Java Android中另一个选项卡内的选项卡(使用片段),java,android,android-fragments,android-tabs,Java,Android,Android Fragments,Android Tabs,在我的应用程序(android 2.1)中,我成功地使用片段添加了选项卡,并使用android兼容库v4 现在我想在一个片段选项卡中添加另一个选项卡,但是tabwidget抛出NullPointerException,我在这里做错了什么 日志: 05-08 12:58:57.060: W/dalvikvm(1371): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 05-08 12:58:57.060:

在我的应用程序(android 2.1)中,我成功地使用片段添加了选项卡,并使用android兼容库v4

现在我想在一个片段选项卡中添加另一个选项卡,但是tabwidget抛出NullPointerException,我在这里做错了什么

日志:

05-08 12:58:57.060: W/dalvikvm(1371): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
05-08 12:58:57.060: E/AndroidRuntime(1371): Uncaught handler: thread main exiting due to uncaught exception
05-08 12:58:57.100: E/AndroidRuntime(1371): java.lang.NullPointerException
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.widget.TabWidget.dispatchDraw(TabWidget.java:206)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.View.draw(View.java:6538)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.View.draw(View.java:6538)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.support.v4.view.ViewPager.draw(ViewPager.java:1574)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.drawChild(ViewGroup.java:1529)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.View.draw(View.java:6538)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.drawChild(ViewGroup.java:1531)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1258)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.View.draw(View.java:6538)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.widget.FrameLayout.draw(FrameLayout.java:352)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1830)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewRoot.draw(ViewRoot.java:1349)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1114)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.os.Looper.loop(Looper.java:123)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at android.app.ActivityThread.main(ActivityThread.java:4363)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at java.lang.reflect.Method.invokeNative(Native Method)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at java.lang.reflect.Method.invoke(Method.java:521)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-08 12:58:57.100: E/AndroidRuntime(1371):     at dalvik.system.NativeStart.main(Native Method)
//子选项卡片段

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;

public class Tab3Fragment extends Fragment
{

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    if (container == null) {
        // We have different layouts, and in one of them this
        // fragment's containing frame doesn't exist.  The fragment
        // may still be created from its saved state, but there is
        // no reason to try to create its view hierarchy because it
        // won't be displayed.  Note this is not needed -- we could
        // just run the code below, where we would create and return
        // the view hierarchy; it would just never be used.
        return null;
    }
    return (LinearLayout)inflater.inflate(R.layout.subtab, container, false);
}
}

//subtab.xml

<?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="#4C4C4C" >
<TabHost 
android:id="@android:id/tabhost" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
android:padding="2dp"> 

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

        </FrameLayout> 
     </LinearLayout> 
    </TabHost>
   </LinearLayout> 


选项卡中的选项卡?这听起来有点复杂。。。你确定没有更简单的方法来组织你的应用程序吗?(我不是说你错了,我只是说这可能值得考虑)。此外,你定义了两次xml模式(
xmnls:android
)。您只需要在父布局中执行一次。xml模式是一个错误,但这不是问题所在。我已经使用TabActivity完成了这项工作。我现在使用片段实现,因为TabActivity已被弃用。您的问题听起来像是试图在
选项卡中添加
TabActivity
。你可能想澄清一下。我已经用过TabActivity了,我不想再使用TabActivity了,因为它已经被弃用了。现在我想用片段实现它。