java.lang.RuntimeException: java.lang.NullPointerExcept的处理

来源:互联网 发布:gp6打谱软件 mac 编辑:程序博客网 时间:2024/06/13 07:47

今天做项目遇到了这个问题,我把R.id写成了R.layout导致查找了半天的资料

下面就把查找的资料和体会总结一下

做Android项目中,java.lang.RuntimeException: Unable to start activity ComponentInfo{。。。。}: java.lang.NullPointerException这类空指针异常经常搞得蛋疼连篇欲罢不能
今天在做项目的时候就遇到了这样的问题,找了好久,各种百度终于解决了这个
看似蛋疼实则简单的问题。现在总结一下。
上图中的布局是利用GitHub里托管的框架写的
应用SlidingMenu的框架,必须要做的就是要把下载的ZIP解压到工作
控件,然后把Slidingmenu里的library导入到工程中,然后新建
项目,再把工程中的library导入到新建的项目中
注意,这里会出现SHA-1算法错误,要替换新的V4包
即可。
进入今天正文:空指针异常
这个错误太多见了,一般是下面几方面错误:
 ①一些控件只是声明了 没有实例化直接拿来用

  ②资源文件的命名有问题:前后多一个空格

  ③局部变量如int string没有赋予初值 直接拿来用

  ④网络访问 xml json解析等等场合,得到的数据其实为空,但没有进行if  null判断(仔细检查一些路径 key这些字符串是不是写对了  特别是多一个空格,导致娶不到数据) 
 
错误信息字符串:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.first/com.first.Game}: java.lang.NullPointerException

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

原因一:xxx的错误,若为R.layout.main  那么应该是main.xml文件中的标签
使用错误,最常见的而且编译器不会提示的错误就是 android:name 和 android:id 两者混淆,
仔细检查main.xml的标签是否全部正确

原因二:在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)调用之前并在方法内进行实例化即可解决



0 0
原创粉丝点击