Android 2.3.3选项卡式活动每个选项卡一个视图|接收错误“无法创建标签内容,因为找不到包含id的视图”

时间:2012-01-23 03:06:29

标签: android tabs

环境:使用Google API的Android 2.3.3

我知道这有点长,但我发布了所有信息,以防您需要参考它。提前谢谢!

我在这里关注了Android示例:http://developer.android.com/guide/tutorials/views/hello-tabwidget.html,但是我收到错误“由以下引起:java.lang.RuntimeException:无法创建标签内容,因为找不到包含id的视图”。

以下是应用流程: 应用程序从主屏幕开始,在onStart()中创建一个Intent并启动CartActivity。在CartActivity开始之前,应用程序崩溃并出现RuntimeException“无法创建选项卡内容,因为找不到ID为2131034112的视图”

CartActivity

import com.cart.R;

import android.app.Activity;
import android.app.TabActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TextView;

public class CartActivity extends TabActivity 
{
    private TextView cartNameLabel;
    private EditText inputCartName;

    private TextView priceLabel;
    private EditText inputPrice;

    private EditText inputFruit;
    private ListView displayFruits;

    private TabHost tabHost;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.cart);

        Log.i(this.getClass().toString(), "Before addTabs()");
        addTabs();
        Log.i(this.getClass().toString(), "After addTabs()");

        cartNameLabel = (TextView)findViewById(R.id.createCartNameLabel);

        inputCartName = (EditText)findViewById(R.id.enterCartName);

        priceLabel = (TextView)findViewById(R.id.createPriceLabel);

        inputPrice = (EditText)findViewById(R.id.enterPrice);

        inputFruit = (EditText)findViewById(R.id.enterFruit);    
    }

    /**
     * Adds and displays the tabs to the Activity
     */
    private void addTabs()
    {           
        tabHost = getTabHost();
        tabHost.addTab(tabHost.newTabSpec("Tab1+a").setIndicator("X").setContent(R.id.addTab1a));
        tabHost.addTab(tabHost.newTabSpec("Tab2").setIndicator("Y").setContent(R.id.addTab2));

        tabHost.setCurrentTab(0);
    }   

}

Cart.xml

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

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        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"/>

            <!-- Layout for Add 1 + a Tab -->
            <LinearLayout
                android:id="@+id/addTab1a"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical">        
                <TextView
                android:id="@+id/createCartNameLabel"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="@string/createCartNameLabelText"/>

                <EditText 
                android:id="@+id/enterCartName"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"/>

                <TextView
                android:id="@+id/createPriceLabel"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="@string/priceLabelText"/>

                <EditText 
                android:id="@+id/enterPrice"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"/>
            </LinearLayout>

            <!-- Layout for Add Tab2 -->
            <LinearLayout
                android:id="@+id/addTab2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical">        
                <TextView
                android:id="@+id/createFruitLabel"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="@string/createFruitLabelText"/>

                <EditText 
                android:id="@+id/enterFruit"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"/>
            </LinearLayout>



    </LinearLayout>
</TabHost>

HomeActivity

package com.cart.activities;

import com.cart.R;
import com.cart.R.layout;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class HomeActivity extends Activity 
{
    private TextView welcomeMessage;

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

        welcomeMessage = (TextView)findViewById(R.id.welcomeMessage);           

    }

    @Override
    public void onStart()
    {
        super.onStart();

        Intent intent = new Intent(getApplicationContext(), CartActivity.class);
        HomeActivity.this.startActivity(intent);
    }    

}

main.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:orientation="vertical" >

    <TextView
        android:id="@+id/welcomeMessage"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/welcome" />

</LinearLayout>

R.java

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found.  It
 * should not be modified by hand.
 */

package com.cart;

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int ic_launcher=0x7f020000;
    }
    public static final class id {
        public static final int addTab1a=0x7f050000;
        public static final int addTab2=0x7f050005;
        public static final int createCartNameLabel=0x7f050003;
        public static final int createFruitLabel=0x7f050006;
        public static final int createPriceLabel=0x7f050001;
        public static final int enterCartName=0x7f050007;
        public static final int enterFruit=0x7f050002;
        public static final int enterPrice=0x7f050004;                
        public static final int welcomeMessage=0x7f050008;
    }
    public static final class layout {
        public static final int cart=0x7f030000;
        public static final int main=0x7f030001;
    }
    public static final class string {
        public static final int app_name=0x7f040001;
        public static final int createCartNameLabelText=0x7f040002;
        public static final int createFruitLabelText=0x7f040004;        
        public static final int priceLabelText=0x7f040003;        
        public static final int welcome=0x7f040000;
    }
}

Cart Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.cart"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" 
        android:debuggable="true">

        <activity
            android:name=".activities.HomeActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".activities.CartActivity">
            <intent-filter></intent-filter>
        </activity>
    </application>

</manifest>

1 个答案:

答案 0 :(得分:1)

将布局文件的名称更改为 cart.xml

当更改为以下格式时,样本会运行

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/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">
    <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">

         <LinearLayout
            android:id="@+id/addTab1a"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical">        
            <TextView
            android:id="@+id/createCartNameLabel"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="CreateCartNameLabelText"/>

            <EditText 
            android:id="@+id/enterCartName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>

            <TextView
            android:id="@+id/createPriceLabel"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="PriceLabelText"/>

            <EditText 
            android:id="@+id/enterPrice"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
        </LinearLayout>
         <LinearLayout
            android:id="@+id/addTab2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical">        
            <TextView
            android:id="@+id/createFruitLabel"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="CreateFruitLabelText"/>

            <EditText 
            android:id="@+id/enterFruit"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
        </LinearLayout>
    </FrameLayout>
</LinearLayout>
</TabHost>