android.view.inflateexception 二进制 xml 文件第 1 行错误膨胀类 android.widget.relativeLayout

Posted

技术标签:

【中文标题】android.view.inflateexception 二进制 xml 文件第 1 行错误膨胀类 android.widget.relativeLayout【英文标题】:android.view.inflateexception binary xml file line #1 error inflating class android.widget.relativeLayout 【发布时间】:2014-01-12 19:18:00 【问题描述】:

我是 android 新手。 我刚刚创建了一个带有一个文本栏和 2 个按钮的新布局,但它不起作用,我正在发布堆栈跟踪和我的相关布局文件,对此有什么想法吗?我在那里看到了同样的问题,它说要减少可绘制的大小。但这对我的情况没有帮助,或者我现在对如何减少它没有太多帮助。 这是我的一些堆栈跟踪:

  D/AndroidRuntime(1192): Shutting down VM
W/dalvikvm(1192): threadid=1: thread exiting with uncaught exception (group=0xb60cc4f0)
E/AndroidRuntime(1192): FATAL EXCEPTION: main
E/AndroidRuntime(1192): java.lang.RuntimeException: Unable to start activity ComponentInfocom.example.hellomissworld/com.example.hellomissworld.MainActivity: android.view.InflateException: Binary XML file line #1: Error inflating class android.widget.RelativeLayout
E/AndroidRuntime(1192):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
12-24 18:58:31.451: E/AndroidRuntime(1192):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
12-24 18:58:31.451: E/AndroidRuntime(1192):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
12-24 18:58:31.451: E/AndroidRuntime(1192):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)

那是layout的xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:background="@layout/activity_main"
    android:focusable="false"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <EditText
        android:id="@+id/editText1"
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="24dp"
        android:ems="10"
        android:inputType="text" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/textView1"
        android:layout_
        android:layout_
        android:layout_alignLeft="@+id/editText1"
        android:layout_alignParentTop="true"
        android:text="@string/typehere"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <Button
        android:id="@+id/button2"
        android:layout_
        android:layout_
        android:layout_alignRight="@+id/editText1"
        android:layout_below="@+id/editText1"
        android:text="@string/ok" />

    <Button
        android:id="@+id/button1"
        android:layout_
        android:layout_
        android:layout_below="@+id/editText1"
        android:layout_toLeftOf="@+id/button2"
        android:text="@string/cancel" />

</RelativeLayout>

【问题讨论】:

【参考方案1】:

你必须改变

android:background="@layout/activity_main"

android:background="@drawable/yourImageName"

【讨论】:

但是当我去 drawable/activity_main 时找不到资源 这里的activity_main是布局名称。但是您必须在可绘制文件夹中提供您的图像名称。查看我的更新答案 哦..这是我的荣幸..欢迎来【参考方案2】:

有时,当您使用实际上太大的大图像时也会弹出此错误,从而导致内存错误并使您的应用程序崩溃。如果您使用背景图片或任何大型资产,请确保它们存在并且它们不会太大,然后您将在雨中唱歌!

【讨论】:

哦..这条评论对我有很大帮助!谢谢!【参考方案3】:

这一行表示布局的第一行:

android.view.InflateException: Binary XML file line #1: Error inflating class 

第一行是相对布局声明:

所以错误在android:background,这不是设置布局背景的正确方法:

android:background="@layout/activity_main"

它应该是彩色或可绘制的图像

android:background="@color/backgroundColor"android:background="#012345"

android:background="@drawable/backgroundimg"

【讨论】:

【参考方案4】:

这是错的android:background="@layout/activity_main"应该是

android:background="@color/backgroundColor" 

android:background="@drawable/backgroundimg"

【讨论】:

@jazzb 是的,这是因为布局用于 Activity 显示在屏幕上。【参考方案5】:

在我的情况下解决的问题是更改我的color.xml 的位置

当我从我的其他项目中复制并粘贴到新项目中时,Android Studio 将其放置在 v21 文件夹中,这意味着我的模拟器 (v19) 无法访问资源文件 color.xml

我做了以下修复:

    右键点击color.xml。 选择Refactor > Move。 在打开的对话框中,删除了后缀-v21

现在,我的“旧”模拟器能够读取文件了。

希望对你有帮助..

【讨论】:

这为我修好了,谢谢。同样的东西,从其他项目复制。我的文件夹名称的添加与您的不同 - 我的后缀为 w820dp【参考方案6】:

我遇到了同样的问题 - 但在没有背景图片的活动中。

我发现 GUI 编辑器(使用 Eclipse 时 - 我不了解 Android Studio)有时会无故添加 buggy 属性:

android:background="@layout/activity_main"

我不确定编辑器为什么这样做 - 可能是错误或只是使用错误。

但是,如果活动没有背景图像,则只需删除整个属性!

【讨论】:

【参考方案7】:

如果您使用 Google Play 服务并显示地图,您应该在 AndroidManifest.xml 中添加 Meta 标签

**<meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />**

【讨论】:

这与这个问题无关。

以上是关于android.view.inflateexception 二进制 xml 文件第 1 行错误膨胀类 android.widget.relativeLayout的主要内容,如果未能解决你的问题,请参考以下文章