【问题标题】:Tab with in a Tab runtime error选项卡运行时错误中的选项卡
【发布时间】:2017-02-28 11:21:58
【问题描述】:

我正在尝试嵌入选项卡,并且在抛出运行时之前一切看起来都很好。我似乎看不出有什么问题,尽管它可能出在 XML 中 - 您的 TabHost 必须有一个 id 属性为“android.R.id.tabcontent”的 FrameLayout

com.example.dawnlp.mymap, PID: 23323
                                                                                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.dawnlp.mymap/com.example.dawnlp.mymap.Tab2Activity}: java.lang.RuntimeException: Your TabHost must have a FrameLayout whose id attribute is 'android.R.id.tabcontent'
                                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
                                                                                      at android.app.ActivityThread.startActivityNow(ActivityThread.java:2977)
                                                                                      at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:136)
                                                                                      at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:348)
                                                                                      at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:764)
                                                                                      at android.widget.TabHost.setCurrentTab(TabHost.java:423)
                                                                                      at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:193)
                                                                                      at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:645)
                                                                                      at android.view.View.performClick(View.java:5697)
                                                                                      at android.view.View$PerformClick.run(View.java:22526)
                                                                                      at android.os.Handler.handleCallback(Handler.java:739)
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                      at android.os.Looper.loop(Looper.java:158)
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:7224)
                                                                                      at java.lang.reflect.Method.invoke(Native Method)
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
                                                                                   Caused by: java.lang.RuntimeException: Your TabHost must have a FrameLayout whose id attribute is 'android.R.id.tabcontent'
                                                                                      at android.widget.TabHost.setup(TabHost.java:202)
                                                                                      at android.widget.TabHost.setup(TabHost.java:222)
                                                                                      at android.app.TabActivity.onContentChanged(TabActivity.java:135)
                                                                                      at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:479)
                                                                                      at android.app.Activity.setContentView(Activity.java:2387)
                                                                                      at com.example.dawnlp.mymap.Tab2Activity.onCreate(Tab2Activity.java:28)
                                                                                      at android.app.Activity.performCreate(Activity.java:6876)
                                                                                      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135)
                                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206)
                                                                                      at android.app.ActivityThread.startActivityNow(ActivityThread.java:2977) 
                                                                                      at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:136) 
                                                                                      at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:348) 
                                                                                      at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:764) 
                                                                                      at android.widget.TabHost.setCurrentTab(TabHost.java:423) 
                                                                                      at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:193) 
                                                                                      at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:645) 
                                                                                      at android.view.View.performClick(View.java:5697) 
                                                                                      at android.view.View$PerformClick.run(View.java:22526) 
                                                                                      at android.os.Handler.handleCallback(Handler.java:739) 
                                                                                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                                                      at android.os.Looper.loop(Looper.java:158) 
                                                                                      at android.app.ActivityThread.main(ActivityThread.java:7224) 
                                                                                      at java.lang.reflect.Method.invoke(Native Method) 
                                                                                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

我的代码

public class Tab2Activity extends TabActivity
{




    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab2);

        /////////////////////////

        TabHost tabHost2 = getTabHost();

        TabHost.TabSpec Gmapped = tabHost2.newTabSpec("InnerTabs");
        // setting Title and Icon for the Tab
        Gmapped.setIndicator("", getApplicationContext().getResources().getDrawable(R.drawable.tab3));
        Intent GmappedIntent = new Intent(this, Tab3Activity.class);
        GmappedIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        Gmapped.setContent(GmappedIntent);

        tabHost2.addTab(Gmapped);

和 tab.xml - 我认为问题就在这里

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:gravity="center"
    android:background="#332b2b"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.dawnlp.mymap.Tab2Activity">

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
 >
    <LinearLayout
        android:id="@+id/linearlayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"

        android:orientation="vertical" >

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

        </TabWidget>

        <Button
            android:id="@+id/veganfestival"

            android:text="Aberdeen"
            android:textColor="#FFFFFF"
            android:textSize="30sp"

            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:background="@drawable/buttonshape"
            android:shadowColor="#A8A8A8"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"

            />
        <TextView
            android:id="@+id/blank"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:textSize="20dp"
            android:textColor="#ffffff" />
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#6f844a" />
        <TextView
            android:id="@+id/venue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Venue"
            android:textSize="20dp"
            android:textColor="#ffffff" />

        <TextView
            android:id="@+id/address"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Address"
            android:textSize="20dp"
            android:textColor="#ffffff" />
        <TextView
            android:id="@+id/city"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="City"
            android:textSize="20dp"
            android:textColor="#ffffff" />
        <TextView
            android:id="@+id/postcode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Postcode"
            android:textSize="20dp"
            android:textColor="#ffffff" />
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#6f844a" />
        <TextView
            android:id="@+id/Vdate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Date"
            android:textSize="20dp"
            android:textColor="#ffffff" />
        <TextView
            android:id="@+id/Vtime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Time"
            android:textSize="20dp"
            android:textColor="#ffffff" />
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#6f844a" />

        <TextView
            android:id="@+id/blankagain"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:textSize="20dp"
            android:textColor="#ffffff" />


        <Button
            android:id="@+id/nav"

            android:text="Take Me There"
            android:textColor="#FFFFFF"
            android:textSize="30sp"

            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:background="@drawable/buttonshape"
            android:shadowColor="#A8A8A8"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"

            />


    </LinearLayout>
    </TabHost>
    </ScrollView>

【问题讨论】:

    标签: android xml runtime android-tabhost


    【解决方案1】:

    在您的 xml 文件中添加框架布局。在框架布局内添加 TabHost 和其他子元素。

    <ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:gravity="center"
    android:background="#332b2b"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.dawnlp.mymap.Tab2Activity">
    
    <FrameLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
     >
    <LinearLayout
        android:id="@+id/linearlayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:orientation="vertical" >
    
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"   >
    
        </TabWidget>
    
        <Button
            android:id="@+id/veganfestival"
    
            android:text="Aberdeen"
            android:textColor="#FFFFFF"
            android:textSize="30sp"
    
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:background="@drawable/buttonshape"
            android:shadowColor="#A8A8A8"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
    
            />
        <TextView
            android:id="@+id/blank"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
    
            android:textSize="20dp"
            android:textColor="#ffffff" />
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#6f844a" />
        <TextView
            android:id="@+id/venue"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Venue"
            android:textSize="20dp"
            android:textColor="#ffffff" />
    
        <TextView
            android:id="@+id/address"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Address"
            android:textSize="20dp"
            android:textColor="#ffffff" />
        <TextView
            android:id="@+id/city"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="City"
            android:textSize="20dp"
            android:textColor="#ffffff" />
        <TextView
            android:id="@+id/postcode"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Postcode"
            android:textSize="20dp"
            android:textColor="#ffffff" />
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#6f844a" />
        <TextView
            android:id="@+id/Vdate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Date"
            android:textSize="20dp"
            android:textColor="#ffffff" />
        <TextView
            android:id="@+id/Vtime"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Time"
            android:textSize="20dp"
            android:textColor="#ffffff" />
        <View
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="#6f844a" />
    
         <TextView
            android:id="@+id/blankagain"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
    
            android:textSize="20dp"
            android:textColor="#ffffff" />
    
    
        <Button
            android:id="@+id/nav"
    
            android:text="Take Me There"
            android:textColor="#FFFFFF"
            android:textSize="30sp"
    
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:background="@drawable/buttonshape"
            android:shadowColor="#A8A8A8"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="5"
    
            />
    
    
    </LinearLayout>
    </TabHost>
    </FrameLayout>
    </ScrollView>
    

    【讨论】:

    • 感谢@sakikumar。但是抛出错误你的 TabHost 必须有一个 FrameLayout,其 id 属性是'android.R.id.tabcontent'
    • TabHost android:id="@android:id/android.R.id.tabhost" 显示错误
    • android:id="@android:id/tabhost"
    • android.widget.FrameLayout 无法转换为 android.widget.TabHost
    猜你喜欢
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    相关资源
    最近更新 更多