findViewById返回Null 错误
2012-11-18 12:25
330 查看
1.在另一个view的元素应该用baseView.findViewById()来拿
findViewById()是要指定view的,如果在该view下找不到,自然报null。平时注意养成写view.findViewById()的习惯就不容易错了。
2.findViewById在setContentView(R.layout.main);之前.
即在setContentView调用之前,调用了findViewById去找main布局中的界面元素lv_contactbook,那么所得到的lv一定是null。正确的做法是将上面代码中加粗的哪一行,挪至setContentView方法调用之后即可。
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了。
4.setContentView使用错误的布局xml
曾经遇到在R.layout.detail_activity 对应的xml中增加控件,但是使用findViewById获得后为null。
后来发现setContentView(R.layout.main)加载的布局不是我要的那个,所以出错。
findViewById()是要指定view的,如果在该view下找不到,自然报null。平时注意养成写view.findViewById()的习惯就不容易错了。
2.findViewById在setContentView(R.layout.main);之前.
即在setContentView调用之前,调用了findViewById去找main布局中的界面元素lv_contactbook,那么所得到的lv一定是null。正确的做法是将上面代码中加粗的哪一行,挪至setContentView方法调用之后即可。
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了。
4.setContentView使用错误的布局xml
曾经遇到在R.layout.detail_activity 对应的xml中增加控件,但是使用findViewById获得后为null。
后来发现setContentView(R.layout.main)加载的布局不是我要的那个,所以出错。
相关文章推荐
- 【Fragment精深系列5】fragment findViewById()返回null完全解析
- findViewById()返回null
- findViewById值为null,报nullpointer错误的问题
- android findViewById 返回 null
- 关于findViewById返回空指针的错误
- 【android中findViewById返回控件指针为NULL】
- findViewById值为null,报nullpointer错误的问题
- opengl的surfaceview使用findViewById返回null问题解决
- findViewById返回Null
- findViewById值为null,报nullpointer错误的问题
- fragment findViewById()返回null完全解析
- Andorid findViewById()返回Null
- findViewById(R.id.listview_category)返回null的问题
- 关于:findViewById()返回null的问题和如何获取Fragment中的组件
- findViewById出现错误View.isRootNamespace()' on a null object reference
- android初学笔记之<findViewById方法返回Null的原因>
- Android开发:findViewById返回null的解决办法
- findViewById中NullPointerException的错误
- Android Error —— 自定义控件FindViewById() 返回 Null
- AndroidGUI27中findViewById返回null的快速解决办法