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 ...
随机推荐
- C语言实现单链表的逆置
单链表的逆置是一个非常经典的问题,这里利用两个思想进行解决. 首先,我们需要看下原理图,其实两个思想都是一样的,都是使后一个的节点的 next 指针指向前一个节点,依次递推,直 ...
- linux stat系统调用,获取文件信息。
stat 函数原型: int stat(const char *path, struct stat *buf); struct stat 说明 struct stat { mode_t st_mode ...
- UNIX网络编程 卷2:进程间通信
这篇是计算机类的优质预售推荐>>>><UNIX网络编程 卷2:进程间通信(第2版)> UNIX和网络专家W. Richard Stevens的传世之作 编辑推荐 两 ...
- Hiddenfield控件
本文转自:http://www.cnblogs.com/weicleer/archive/2012/11/26/2788722.html ASP.NET2.0 HiddenField控件(1)2007 ...
- 工具类CTools实现字符编码转换和获取当前路径
class CTools { public: CTools(void); public: ~CTools(void); public: static std::string UNICODE_to_UT ...
- iphone开发,模拟器生成文件路径
原文链接:http://blog.csdn.net/gf771115/article/details/7722023 Finder---位置----apple(用户名)---application s ...
- docker学习笔记5:利用commit命令创建镜像 和 删除本地镜像
一.概述 创建镜像有两种方法,一是用commit命令,二是用dockerfile方法(这个更常用,在下面文章介绍).本章介绍commit方法. 在介绍commit命令前,我们先回顾下对代码的版本控制, ...
- 高性能MySql学习笔记——锁、事务、隔离级别(转)
为什么需要锁? 因为数据库要解决并发控制问题.在同一时刻,可能会有多个客户端对Table1.rown进行操作,比如有的在读取该行数据,其他的尝试去删除它.为了保证数据的一致性,数据库就要对这种并发操作 ...
- Docker学习笔记(4) — 开启Docker远程访问
默认情况下,Docker守护进程会生成一个socket(/var/run/docker.sock)文件来进程本地进程通信,而不会监听任何端口,因此只能在本地使用docker客户端或者使用Docker ...
- Js脚本实现选项卡的实例
效果演示: 具体代码: <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http:/ ...