- java.lang.RuntimeException:Unable to start
- activityComponentInfo{com.example.newsreader/com.example.newsreader.NewsReaderActivity}: android.view.InflateException: Binary XML file line #45: Error inflating class
- fragment
这个错误是在做一个android的多屏幕设计的时候运行时发生的。
这个错误说的很清楚,无法启动组件详情。
并在下面报出了at com.example.newsreader.NewsReaderActivity.onCreate(NewsReaderActivity.java:79),在onCreate初始化的时候,setContentView(R.layout.main_layout);的时候,报错了。于是我在这行打断点之后发现,这行的时候,main_layout并不是我设置的那个布局页面,于是我开始有些明白了,因为我的项目是为了适配所有的屏幕大小的,所以我的这个main_layout并不是一个具体的xml布局,而是指定的一系列布局的引用。当我改成具体的简单无误xml布局后,该错误就没有了。
后来,经查阅资料发现,我已知的,有下面几类情况发生时,会报出这个错误:
1.setContentView()中指定的布局对象不是具体布局文件,而是一个引用,而该引用或许存在错误。系统加载时因不能分辨故而运行时异常
2.指定的xml是一个具体的布局文件,但是布局文件写的不对,如标签结束不对,标签的结束不对,即组件使用方式不对
3.引用的资源未初始化,导致运行时异常,如R.string.XXX或者R.resource.XXX
4.指定的布局xml既是具体的一个xml,其中的组件也没错,再来引用资源也是对的,那么,唯一可能的就是这个布局view中引用的图片的尺寸太大,设备无法识别,固然运行时异常。
ps:以上的错误我都是在模拟器上运行所得的,手机或平板上并未测试,可能不具备代表性。观点也是个人之见,不知道是否正确,如有不对,欢迎指正。
原文链接:http://www.eyeandroid.com/thread-9570-1-131.html