java.lang.RuntimeException: Unable to start activity ComponentInfo解决方案

来源:互联网 发布:淘宝买家最高等级是谁 编辑:程序博客网 时间:2024/04/28 12:06

借鉴:http://blog.csdn.net/phantomes/article/details/8102787

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是一个具体的布局文件,但是布局文件写的不对,如标签结束不对,<imageView>标签的结束不对,即组件使用方式不对

3.引用的资源未初始化,导致运行时异常,如R.string.XXX或者R.resource.XXX

4.指定的布局xml既是具体的一个xml,其中的组件也没错,再来引用资源也是对的,那么,唯一可能的就是这个布局view中引用的图片的尺寸太大,设备无法识别,固然运行时异常。

5.在main活动中调用如下

public class MainActivity extends FragmentActivity{
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
 }

}

切记,红色标记的地方是FragmentActivity  而不是Activity

 

0 0