android findviewbyid定义成静态,findViewById 为null???
/*
http://my.oschina.net/lifj/blog/283136
*/
錯誤:findViewById返回Null,報nullpointer錯誤
網上搜了下,拾人牙慧,總結原因,一般為4種:
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.對于自定義view,可能是構造方法不對
總結
以上是生活随笔為你收集整理的android findviewbyid定义成静态,findViewById 为null???的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 阿里云管理Android项目,Andro
 - 下一篇: html改变下拉框的大小,调整屏幕大小时