setOnClickListener报空指针异常
1.异常提示:
2.错误原因:
先看代码:
public class MainActivity extends ActionBarActivity {
private Button btn_test;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_test = (Button) findViewById(R.id.btn_test);
setListener();
}
private void setListener() {
btn_test.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, R.string.btn_text,
Toast.LENGTH_SHORT).show();
}
});
}
}
在setListener方法中,发现报空指针异常的地方是setOnClickListener方法,刚開始的时候我百思不得其解。由于我的Button明明初始化成功。点击事件也有。为什么会在这个地方报空指针异常。后来认为可能是布局中的button可能有问题,可是进入setContentView中的activity_main布局,发现我的Button一切正常。id是对的。该有的属性设置也都有。这就奇怪了,后来我无意中发现,原来错误的原因是R.id.btn_test指向了另外一个布局,我在代码中Crtl+鼠标左键竟然是跳转到了另外一个无关的界面,可是这个界面中的一个Button的id和我activity_main界面的Button
id是一样的,到这里,情况就非常清晰明了了。原来之所以setOnClickListener报空指针异常的原因居然是Button findViewById的时候指向了还有一个界面的Button,当前界面的Button并没有被初始化。所以报了空指针异常;更常见的情况是大家在写布局的时候忘了给对应布局的Button设置id。结果在findViewById的时候自然会指向其它布局。导致异常出现。
3.解决的方法:
既然知道了错误原因,那么解决这个异常就非常好办了,仅仅要把这两个界面的Button设置为不同样的就可以(或者给对应xml界面中的Button设置好Id)。在这里要提醒大家,最好不要在app 开发中使用同样的id,免得出现一些意想不到的异常,另外。这个异常并非常常出现。大部分情况下findViewById都会指向setContentView中的xml文件,在当中寻找对应id。仅仅有偶尔的情况下才会出现id指向其它界面的异常。
4.Demo下载:
setOnClickListener报空指针异常的更多相关文章
- Myeclipse下JSP打开报空指针异常解决方法。
Myeclipse下JSP打开报空指针异常解决方法 一.运行JSP文件就出错 静态的JSP页面访问时候正常,只要是牵涉到数据库的页面就出错,出错见下图. 出现这种情况让我调试了一天,各种断点,各种改代 ...
- list.add(),向List集合插入对象报空指针异常
开始的时候我没有判断添加的随想是否为空,直接add;后来加了一个判断,判断了对象不等于空,但是运行程序还是报空指针,这时我发现应该是List出问题了: 查了下资料,发现我初始化List方法不对,如果只 ...
- 爬坑系列----Redis查询key报空指针异常,而redis中确实存在该key
现象: 1.在A方法中根据key查询一个list,可以获取到相应的值 2.在B方法中同样调用此方法,传入相同的key,查询不到值,为null,报空指针异常 起初我也一脸懵逼,到现在虽然解决了,还是不知 ...
- 使用isEmpty()报空指针异常
使用isEmpty()是出现了空指针异常NullpointException: 原来isEmpty()用来判断一个变量是否已经初始化了,因为“”和new 的时候系统都会为其分配内存,不管是否有值,当为 ...
- POI 导出文件 报空指针异常 --Docker 中
应用导出文件时 报空指针异常 莫名的地方Docker 使用的是轻量级的 jdk 需要更换 jdkDockerfile 中修改配置- registry-docker.zhaopin.com.cn/too ...
- 解决spark dataframe get 报空指针异常 java.lang.NullPointerException
Spark 编程读取hive,hbase, 文本等外部数据生成dataframe后,一般我们都会map遍历get数据的每个字段,此时如果原始数据为null时,如果不进行判断直接转化为string,就会 ...
- 关于Eclipse导入maven项目报空指针异常
今天新建了一个maven项目,因为是通过公司的工具新建的,代码拉下来就有src.pom.xml文件. 导入Eclipse却报空指针异常.具体如下: An error has occurred. See ...
- 线程类中使用spring注解报空指针异常
springboot项目开发中,作为服务端,实现了线程类,在此类中添加spring注解@Source注入的service,报空指针异常. 查原因后,发现是线程中,不支持spring注解,因为sprin ...
- java el表达式报空指针异常(nullpointexception)
最近在使用el表达式的时候,用到了int型变量,因为,很多时候,变量不会被赋初值,后面考虑了下,应该将声明由int 改为integer,改了之后就一直报空指针异常,后面仔细查看,我的getter和se ...
随机推荐
- 又见拦截导弹(LIS)
又见拦截导弹 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 大家对拦截导弹那个题目应该比较熟悉了,我再叙述一下题意:某国为了防御敌国的导弹袭击,新研制出来一种导弹拦截系 ...
- 客户机增加域 及server文件共享
客户机要增加域,右击我的电脑--属性--更改--域,输入域名.例:输入域名company.com中的company , 后面的com不要加. 再在弹出的窗体中输入域管理员的完整username(use ...
- glog另启动线程写文本日志
glog本身是很高效的,google的大牛肯定知道大规模的写日志用glog的话肯定会影响业务线程的处理,带负荷的磁盘IO谁都桑不起.比方levelDB就是默认异步写,更不用说google的三驾马车都是 ...
- C# 客户端服务端的编写
客户端的代码 class client { public void mehod() { TcpClient tcp = new TcpClient(); tcp.Connect(IPAddress.P ...
- c++构造析构顺序
class A { public: A(){ cout << "constrcut A" << endl; }; ~A(){ cout << & ...
- C-01背包问题
[声明]:非常感谢http://blog.sina.com.cn/s/blog_6dcd26b301013810.html,给我带来的帮助. 看这个图片表示的意思: w[i]表示第i件物品的容积 ,p ...
- 演练5-7:Contoso大学校园管理系统(实现继承)
***操作视频下载:1 *** 在上一次教程中,你已经能够处理并发异常.这个教程将会展示如何在数据模型中实现继承. 在面向对象的程序设计中,你可以通过继承来清除冗余的代码.在这个教程中,你将要 ...
- 刘汝佳黑书 pku等oj题目
原文地址:刘汝佳黑书 pku等oj题目[转]作者:小博博Mr 一.动态规划参考资料:刘汝佳<算法艺术与信息学竞赛><算法导论> 推荐题目:http://acm.pku.edu. ...
- 【老鸟学算法】大整数乘法——算法思想及java实现
算法课有这么一节,专门介绍分治法的,上机实验课就是要代码实现大整数乘法.想当年比较混,没做出来,颇感遗憾,今天就把这债还了吧! 大整数乘法,就是乘法的两个乘数比较大,最后结果超过了整型甚至长整型的最大 ...
- <Win32_18>平滑的人物走动 —— 解决闪屏
今天咋一看,发现很久没写博客了 的确,开学之后,写博客的时间越来越少了…… 今天来做一个比较实用的小应用——平滑的人物走动,同时解决常见的闪屏问题.实现透明位图 这些技术在游戏开发中是很常见的 --- ...