android初学笔记之<findViewById方法返回Null的原因>
来源:互联网 发布:美国网络银行有几家 编辑:程序博客网 时间:2024/05/13 10:47
findViewById方法返回Null的原因一般有三种:
1.在另一个view的元素应该用baseView.findViewById()来拿
findViewById()是要指定view的,如果在该view下找不到,自然报null。平时注意养成写view.findViewById()的习惯就不容易错了。
2.findViewById在setContentView(R.layout.main);之前.
即在setContentView调用之前,调用了findViewById去找main布局中的界面元素lv_contactbook,那么所得到的lv一定是null。正确的做法是将上面代码中加粗的哪一行,挪至setContentView方法调用之后即可。
这个最容易犯,setContentView()把layout布局文件中的代码实例化为对象,这样findViewById才可以获得对象,因此必须在调用setContentView方法之后再调用findViewById方法,一般此方法调用的就是Activity下的方法。还有一种是View下的方法。
3.clean一下工程,让ID重新生成
这种情况是调用LayoutInflater.inflate将布局xml规定的内容转化为相应的对象。比如有rowview.xml布局文件(比如在自定义Adapter的时候,用作ListView中的一行的内容的布局),假定在自定的Adapter的getView方法中有类似如下的代码:
View rowview = (View)inflater.inflate(R.layout.rowview, parent, false);
TextView tv_contact_id =(TextView)rowview.findViewById(R.id.tv_contact_id);
TextView tv_contactname =(TextView)rowview.findViewById(R.id.tv_contactname);
有时候居然也会发现rowview非空,但tv_contact_id和tv_contactname都是null!仔细看代码,怎么也看不出错误来。到底是什么原因造成的呢?答案是Eclipse造成的,要解决这个问题,需要这个项目clean一次(Project菜单 -> Clean子菜单),这样就OK了
- android初学笔记之<findViewById方法返回Null的原因>
- 【ANDROID】Android 在oncreate() 方法中调用 findViewById 返回 null 问题的原因和解决方法
- android开发之自定义控件时findViewById方法返回null的解决方法
- android findViewById 返回 null
- Android开发:findViewById返回null的解决办法
- Android开发:findViewById返回null的解决办法
- Android开发:findViewById返回null的解决办法
- android inflate之后findViewById返回null的解决方法
- [Android] Fragment findViewById()返回null完全解析
- AndroidGUI27:findViewById返回null的解决办法
- findViewById返回null的诡异情况
- findViewById()返回 null
- findViewById返回null
- Andorid findViewById()返回Null
- findViewById()返回null
- findViewById返回Null 错误
- findViewById 返回null
- findViewById()返回 null
- PHP实现各种排序算法
- PHP检测每一段代码执行时间
- FOXHIS西软系统sybase提示通知空间不足处理方法
- LaTeX新人教程,30分钟从完全陌生到基本入门
- 回调函数实现类似QT中信号机制
- android初学笔记之<findViewById方法返回Null的原因>
- 强叔侃墙 VPN篇 IPSec遭遇NAT处变不惊,见招拆招化险为夷
- 【swift】15-0515 optional,断言
- 触发器
- 关于TeX,LaTeX,MikTex,CTeX,etc.
- Linux学习篇之---CentOS Yum命令详解
- oracle 存储过程 基础
- PHP实现多进程并行执行脚本
- Hadoop2.0:Jvisualvm监控MapReduce和spark作业