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 ...
随机推荐
- springMVC中得到request对象,session对象
RequestAttributes ra = RequestContextHolder.getRequestAttributes(); HttpServletRequest request = ((S ...
- Nginx+tomcat集群环境搭建
实验环境:windows xp sp3 Nginx版本:1.5.12: 下载地址:http://nginx.org/en/download.html Tomcat版本:6.0.39 下载地址:http ...
- sql基础,必须会的————随便整理、杂乱无章
1.sqlserver2008r2的安装 2.数据库与表的建立.增加.删除.修改. 3,索引的概念,包括聚集与非聚集的区别.全文索引的建立与如何使用全文索引. 4,重新生成索引,重新组织索引. 5,建 ...
- Arduino 入门程序示例之一片 LED(2015-06-11)
概述 从点到线,从线到面.现在开始要来一片的 LED 了,一大波的 LED 正在到来! 示例程序 因为手头没有现成的模块,手头只有 595,所以这里每一个示例程序都是使用 74HC595 扩展 IO ...
- C/C++取出变量的每一位的值(第一次知道还有QBitArray)
前写程序最多也只是字节级别操作,用char和memcpy进行一系列内存操作.此次一个sdk,其状态值直接是每位一个标示,所以需要取出每位进行操作.当然CPP也有丰富的位运算操作,但是虽然也学过,知道意 ...
- Cubieboard4卡片式电脑
Cubieboard4 also named CC-A80, is a open source mini PC or single board computer which has ultra-pow ...
- cocos2d-x游戏开发系列教程-坦克大战游戏之所有坦克之间的碰撞检测
上篇我们完成了简单的AI编写,但是各个坦克移动时之间是可以重合的, 这节课我们来完成坦克之间的碰撞检测,还是在上篇的EnemyAI中完成. 1.我先现在坦克类Tank中添加两个成员变量: CC_SYN ...
- 基于visual Studio2013解决C语言竞赛题之1003字母打印
题目 解决代码及点评 ///************************************************************************/ ...
- 基于visual Studio2013解决C语言竞赛题之0804成绩筛选
题目
- codeforces 264D Colorful Stones
题目 题目来自于rng_58Orz. 算法 讨论某个状态\((x,y)\)是否可达,\(x\)是狐狸到达的石头,\(y\)是猫的. 题解说,如果满足以下条件,那么它就是可到达状态: \(t[0..y] ...