1

我想使用继承为我的 android 应用程序创建一个布局,即每个屏幕都将具有相同的背景和标题。

具有该背景和标题的布局是这样指定的:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="25dp"
    android:background="@drawable/background"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/headerLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginTop="2dp"
        android:text="@string/app_name"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="@string/ColorLabel" />

</LinearLayout>

</merge>

而一个特定的屏幕,即登录屏幕,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <include
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/background" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="50dp"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/username_label"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="@string/Username"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/username_box"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="text" >

            <requestFocus />
        </EditText>

        <TextView
            android:id="@+id/password_label"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginTop="10dp"
            android:layout_weight="1"
            android:text="@string/Password"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/password_box"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="textPassword" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_gravity="fill"
            android:layout_marginTop="10dp"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:weightSum="2" >

            <Button
                android:id="@+id/login_button"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center|left"
                android:layout_marginRight="20dp"
                android:background="@drawable/background"
                android:text="@string/Login"
                android:textColor="@string/ColorLabel" />

            <Button
                android:id="@+id/register_button"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:background="@drawable/background"
                android:text="@string/Register"
                android:textColor="@string/ColorLabel" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

</merge>

当我想运行此代码时,会导致错误:

10-05 17:10:11.620: D/AndroidRuntime(25222): Shutting down VM
10-05 17:10:11.623: W/dalvikvm(25222): threadid=1: thread exiting with uncaught exception (group=0x40015578)
10-05 17:10:11.635: E/AndroidRuntime(25222): FATAL EXCEPTION: main
10-05 17:10:11.635: E/AndroidRuntime(25222): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.shopassistent/com.shopassistent.Login_Activity}: android.view.InflateException: Binary XML file line #9: Error inflating class <unknown>
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.os.Handler.dispatchMessage(Handler.java:99)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.os.Looper.loop(Looper.java:123)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.app.ActivityThread.main(ActivityThread.java:3687)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at java.lang.reflect.Method.invokeNative(Native Method)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at java.lang.reflect.Method.invoke(Method.java:507)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at dalvik.system.NativeStart.main(Native Method)
10-05 17:10:11.635: E/AndroidRuntime(25222): Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class <unknown>
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.view.LayoutInflater.createView(LayoutInflater.java:518)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.view.LayoutInflater.parseInclude(LayoutInflater.java:682)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:619)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.view.LayoutInflater.inflate(LayoutInflater.java:383)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:209)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.app.Activity.setContentView(Activity.java:1657)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at com.shopassistent.Login_Activity.onCreate(Login_Activity.java:12)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
10-05 17:10:11.635: E/AndroidRuntime(25222):    ... 11 more
10-05 17:10:11.635: E/AndroidRuntime(25222): Caused by: java.lang.reflect.InvocationTargetException
10-05 17:10:11.635: E/AndroidRuntime(25222):    at java.lang.reflect.Constructor.constructNative(Native Method)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.view.LayoutInflater.createView(LayoutInflater.java:505)
10-05 17:10:11.635: E/AndroidRuntime(25222):    ... 26 more
10-05 17:10:11.635: E/AndroidRuntime(25222): Caused by: android.content.res.Resources$NotFoundException: File #ffffff from drawable resource ID #0x7f040009: .xml extension required
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.content.res.Resources.loadColorStateList(Resources.java:1824)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.content.res.TypedArray.getColorStateList(TypedArray.java:342)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.widget.TextView.<init>(TextView.java:677)
10-05 17:10:11.635: E/AndroidRuntime(25222):    at android.widget.TextView.<init>(TextView.java:369)
10-05 17:10:11.635: E/AndroidRuntime(25222):    ... 29 more

谁能看到这个错误来自哪里?

4

4 回答 4

3

这里

android:textColor="@string/ColorLabel"

它返回 a#FFFFFF作为一个字符串,它又被解释为一个可绘制的文件名,因此

Caused by: android.content.res.Resources$NotFoundException: File #ffffff from drawable resource ID #0x7f040009: .xml extension required

对 textColor 使用可绘制对象或颜色参考

于 2012-10-05T15:23:46.433 回答
1

你有 background.xml 吗?

Caused by: android.content.res.Resources$NotFoundException: File #ffffff from drawable resource ID #0x7f040009: .xml extension required
于 2012-10-05T14:59:57.167 回答
1

您的第一个 xml 甚至是复制粘贴错误或无效:

<merge>标签没有尽头。您应该</merge>在文件末尾添加一个(如果这不是复制粘贴错误)

编辑:第二个xml文件有同样的问题

于 2012-10-05T15:04:46.810 回答
0

你必须从你的第二个文件中删除“requestFocus”,改用这个:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <include
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/background" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="50dp"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/username_label"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="@string/Username"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/username_box"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="text" >


        </EditText>

        <TextView
            android:id="@+id/password_label"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginTop="10dp"
            android:layout_weight="1"
            android:text="@string/Password"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/password_box"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="textPassword" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_gravity="fill"
            android:layout_marginTop="10dp"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:weightSum="2" >

            <Button
                android:id="@+id/login_button"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center|left"
                android:layout_marginRight="20dp"
                android:background="@drawable/background"
                android:text="@string/Login"
                android:textColor="@string/ColorLabel" />

            <Button
                android:id="@+id/register_button"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:background="@drawable/background"
                android:text="@string/Register"
                android:textColor="@string/ColorLabel" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
</merge>
于 2012-10-05T15:05:15.600 回答