android.view.inflateexception binary xml file line 异常的解决方法

有时候一个很简单的xml布局文件,运行却抛出以下异常:

07-25 10:40:50.966: D/AndroidRuntime(31570): Shutting down VM
07-25 10:40:50.966: W/dalvikvm(31570): threadid=1: thread exiting with uncaught exception (group=0x42441700)
07-25 10:40:50.976: E/AndroidRuntime(31570): FATAL EXCEPTION: main
07-25 10:40:50.976: E/AndroidRuntime(31570): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.moveball/com.example.moveball.MainActivity}: android.view.InflateException: Binary XML file line #9: Error inflating class com.example.moveball.DrawView
07-25 10:40:50.976: E/AndroidRuntime(31570): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308)
07-25 10:40:50.976: E/AndroidRuntime(31570): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362)
07-25 10:40:50.976: E/AndroidRuntime(31570): at android.app.ActivityThread.access$700(ActivityThread.java:168)
07-25 10:40:50.976: E/AndroidRuntime(31570): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1329)

出现这种异常,一般是与相应的xml的标签和属性的命名、定义有关。

有时候很小的错误就会产生这种问题,这种小错误一般很难检查,所以在写代码的时候就要有所注意,免得之后检查起来麻烦。

比如:控件EditText写成了TextView等小问题

又如:没有找到资源文件。

提示:可以参考我的另外一篇文章《Android资源文件夹及资源文件的详细介绍》

一般看看res/下面的资源文件,比如全放在drawable-mdpi/目录下,,将drawable-mdpi/下的资源文件拷贝一份到drawable-ldpi/目录下,还是报错误,再拷贝一份到drawable-hdpi/目录下,问题解决。

要经常怀疑寻找的位置资源文件不存在。

一般在res/下建一目录drawable/,将drawable-mdpi/下所有的资源文件都拷贝到drawable/下即可。

这些类似的等等资源文件的错误需要注意。

总结一下xml文件经常容易犯的低级错误:

1. 控件名称不能写错

2.名称的大小写要区分,如EditText与editText是完全不一样的

3.标签一定是成对出现的,尤其是嵌套布局

4.属性前面一般要加android:

5.id比较特殊,应该是@+id ,其它的直接加@即可,如@string

6.drawable中引用的图片资源不存在或名称大小写有误

 

此外,出现这种异常还可能与自定义的View类有关,需要增加一个带属性的构造函数

抛出异常时的main.xml与自定义View类相关代码如下:

activity_main.xml:

<span style="font-size:14px;"><?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <com.example.moveball.DrawView
        android:id="@+id/drawView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </com.example.moveball.DrawView>

</RelativeLayout></span>

继承View的类的自定义View:

<span style="font-size:14px;">public class DrawView extends View{

	private float circleX = 40;
	private float circleY = 50;
	private float circleR = 15;

//	构造方法
	public DrawView(Context context){
		super(context);
	}

//	重写ondraw方法   下面代码省略了...</span>

对于此异常,如下进行修改:添加View类的另一个构造方法即可解决问题!

<span style="font-size:14px;">public class DrawView extends View{

	private float circleX = 40;
	private float circleY = 50;
	private float circleR = 15;

//	构造方法
	public DrawView(Context context,AttributeSet attrs){
		super(context,attrs);
	}</span>

总之抛出这种异常的原因有可能是必须实现的构造器没有实现:

须实现三个构造函数
    public GalleryFlow(Context context) {
            super(context);
    }

    public GalleryFlow(Context context, AttributeSet attrs) {
            super(context, attrs);
    }

    public GalleryFlow(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
    }


时间: 2024-11-04 13:30:59

android.view.inflateexception binary xml file line 异常的解决方法的相关文章

Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class android.support.design.widget.TabLayout,TableLayout引起页面崩溃

在使用TableLayout的时候,运行引用程序直接Crash.   FATAL EXCEPTION: main Process: com.edaixi.activity, PID: 9703 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.edaixi.activity/com.edaixi.activity.PriceCenterActivity}: android.view.InflateExce

android.view.InflateException: Binary XML file line #7: Error inflating class(OOM)

由于页面含有ImageView引起的内存溢出.   作如下处理:在OnDestroy中   Drawable d = imageView.getDrawable(); if (d != null) d.setCallback(null); imageView.setImageDrawable(null); imageView.setBackgroundDrawable(null);

Binary XML file line #2: Error inflating

06-27 14:29:27.600: E/AndroidRuntime(6936): FATAL EXCEPTION: main   06-27 14:29:27.600: E/AndroidRuntime(6936): android.view.InflateException: Binary XML file line #2: Error inflating class       com.example.FileListItem   06-27 14:29:27.600: E/Andro

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ex.activity/com.ex.activity.LoginActivity}: android.view.InflateException: Bina

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ex.activity/com.ex.activity.LoginActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class   异常解决方案: 是因为设置background的图片太大了,造成了内存溢出,在Activity设置onCrea

android-binary xml file line#7:error inflating class

问题描述 binary xml file line#7:error inflating class 错误代码,然后贴上xml文件: xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"

xml-Binary XML file line #84:Error inflating class&amp;amp;lt;unkown&amp;amp;gt;

问题描述 Binary XML file line #84:Error inflating class<unkown> 以下是布局文件 <?xml version="1.0" encoding="utf-8"?> android:orientation="vertical" android:layout_width="match_parent" android:layout_height="m

android studio运行项目时出现这个异常怎么解决??

问题描述 android studio运行项目时出现这个异常怎么解决?? 解决方案 android studio检查严格了,你的有张图片后缀名是png的但是你图片格式不是png的,你把它找出来改后缀名就行了,看他格式可以在as里打开图片,右上角会显示图片的真实格式,与后缀名不符的都改了 解决方案二: 问题:在运行android的项目时出现的异常 The connection to adb is down, and a severe error has occured. [2010-03-11 0

一个HBase异常的解决方法

HBase异常:hbase-default.xml file seems to be for and old version of HBase的解决方法 近期在使用HBase Java Client连接HBase服务端创建Configuration对象时,遇到了hbase-default.xml file seems to be for and old version of HBase的异常,经过查找资料及阅读HBase相关源码,对这类异常的解决方法做一下总结. 异常出现的原因 HBase客户端

Android实现QQ新用户注册界面遇到问题及解决方法_Android

在上篇文章给大家介绍了Android实现QQ登录界面遇到问题及解决方法,本篇文章继续给大家介绍有关android qq界面知识. 先给大家展示下效果图: 问题: 1.下拉列表(因为还没看到这里...) 2.标题栏显示问题 3.按钮的 Enable 设置 以下是代码: 布局 fragment_main(问题1) <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools