天天看点

Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPoi

一般都会在activity  oncreate()方法里的setcontentview(xxx)发生此错误,网上查阅了很多原因,大概有四种重要可能的原因:

原因二:在setcontentview(view)方法之后使用了requestwindowfeature()方法,并且在此错误下面会提示requestfeature必须在setcontentview之前使用,只需要把requestwindowfeature()方法放在setcontentview(view)方法之前就可以解决

原因三:在oncreate()方法之外,并且不属于任何一个方法体内直接给某控件findbyid(r.id.xx)所导致,需要在某方法内并且在setcontentview(view)方法之前进行findbyid(r.id.xx)即可解决

原因四:在setcontentview(view)之前没有对view进行实例化,只进行了声明而直接 setcontentview(view) 所导致,仔细检查view是否setcontentview(view)调用之前并在方法内进行实例化即可解决

原因五:因为发生了空指针的错误异常,所以你应该检查一下比如 spinner 或者 list 这类的东西里面是否有值存在本人app。

在原生android下编译apk,编译没有问题,但是在运行的时候经常出现如标题所描述的异常,然后整个程序crash掉......

    我遇到该问题常常都是因为修改了资源文件所引起,大致有以下几种方式来解决:

    1. 引用类名问题:自定义了一个view,将他用于布局文件中,假设他的包名叫mypackage,类名叫mytestview,这个时候你在xml作为布局元素来布局的话,必须使用完整路径名,也就是包名加类名来引用,用mypackage.mytestview来进行引用。

    2.构造函数问题:自定义一个view,必须派生实现基类view的三个构造函数

    view(context context)     //simple constructor to use when creating a view from code

    view(context context, attributeset attrs)     //constructor that is called when inflating a view from xml

    view(context context, attributeset attrs, int defstyle)     //perform inflation from xml and apply a class-specific base style

    从文档上的介绍来看,第二个和第三个构造函数对于xml这种引用方式是必须实现的,这三个构造函数应该是在不同的应用场合来实例化一个view对象。

    3.编译的中间文件没有清理干净:第三种就是你在原生系统代码的编译环境下编译apk之后,特别是修改了xml,出现标题所述现象,这个时候你只需要删除out目录下编译生成的中间文件夹即可(具体名字记不清了:在编译过程中,系统会将那个位置打印出来,通过串口来看吧,.../out/....../..../classes.dex,你循着这个路径往前推到你的应用的project名字那一层文件夹),删除再重新make就ok了。

    4.找不到资源文件:我原来在2.3的原生系统增加动态壁纸的时候,动态壁纸一跑起来就出这个异常,然后crash,当时就是因为找不到drawable的资源文件,于是当时我把drawable的hdpi或nodpi等文件夹的图片资源都拷贝一份到drawble下,问题解决(当时一直不明白系统会根据分辨率来选择加载不同drawable下文件夹的资源,为什么这里必须放入drawable中)。

转载:http://blog.csdn.net/chaoyu168/article/details/50836538

继续阅读