setText方法报空指针异常
来源:互联网 发布:wps表格怎么引用数据 编辑:程序博客网 时间:2024/05/16 20:30
今天做开发的时候发现一个TextView的setText方法报空指针异常。当时就想着是不是TextView没有初始化,却发现它不为null。然后,就想着既然它不是空的,那就有可能是我传入的值是空的咯!令人沮丧的是我发现传入的值也不为空!!!究其原因,最后发现因为传入的是ArrayList.size()方法,即传入的值类型不对!
即 textView.setText(list.size());
这里传入的是一个int类型,而一般情况下应该是CharSequence类型。当然,你可能会想卧槽,你也它新手了把。不过我想记录的不是类型搞错的问题,而是为什么会在这上面犯错的原因。
原因:首先,我们一般情况下setText()方法传入的是CharSequence类型(String类型是它的一个子类)。那么, 你有没有考虑为什么它也可以传入int类型呢?而且编译时不报错!!!(报错的话,我们不就可以一眼看穿了吗!)其原因是setText( )的重载方法中还真有一个参数类型是int类型的(纳尼,怎么会这样)。那既然有int类型的重载方法,为什么还报错呢?下面是这个方法的源码,大家看一下应该会恍然大悟。
public final void setText(int resid) { throw new RuntimeException("Stub!"); }
在上面的代码中,从int类型的参数名你就可以猜到,它代表的是资源的id也就是常说的R文件里面的东西。所以它也会指向一个CharSequence类型,而不是一个int类型或者其他的非CharSequence类型或者其子类。
所以,综上所述,大家还是不要像我一样犯低级错误就好了。哈哈
1 0
- setText方法报空指针异常
- setOnClickListener报空指针异常
- getActionBar()报空指针异常
- popuwindow报空指针异常
- setOnClickListener报空指针异常
- getActionBar()报空指针异常
- getActionBar 报空指针异常
- c3p0报空指针异常
- findViewById报空指针异常
- getActionBar()报空指针异常
- List报空指针异常
- List的add方法报空指针异常
- 关于android api的 getLayoutParams()方法报空指针异常!
- Fragment setText NullPointerException 报异常
- mediaController 报空指针异常 VideoView 关闭报空指针
- 关于springmvc报的空指针的异常,就是在这个service方法报空指针的原因
- ConcurrentHashMap报空指针异常问题
- 自定义控件获取报空指针异常
- 1083. List Grades (25)
- iOS开发之OC篇(11)—— Class(类)、@property属性
- struts2页面配置
- 1084. Broken Keyboard (20)
- Android中重启程序自己的几种方法
- setText方法报空指针异常
- DataNode无法启动解决
- 10.1.1
- struts2 中获取表单数据的三种方法
- Android App测试基础
- FZU1408(BFS+优化) 之 位图
- 1085. Perfect Sequence (25)
- 123
- map的四种遍历方式,map遍历元素