日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android findviewbyid定义成静态,findViewById 为null???

發(fā)布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android findviewbyid定义成静态,findViewById 为null??? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

/*

http://my.oschina.net/lifj/blog/283136

*/

錯誤:findViewById返回Null,報nullpointer錯誤

網(wǎng)上搜了下,拾人牙慧,總結(jié)原因,一般為4種:

1.在另一個view的元素應(yīng)該用baseView.findViewById()來拿

findViewById()是要指定view的,如果在該view下找不到,自然報null。平時注意養(yǎng)成寫view.findViewById()的習(xí)慣就不容易錯了。

2.findViewById在setContentView(R.layout.main);之前.

即在setContentView調(diào)用之前,調(diào)用了findViewById去找main布局中的界面元素lv_contactbook,那么所得到的lv一定是null。正確的做法是將上面代碼中加粗的哪一行,挪至setContentView方法調(diào)用之后即可。

3.clean一下工程,讓ID重新生成

這種情況是調(diào)用LayoutInflater.inflate將布局xml規(guī)定的內(nèi)容轉(zhuǎn)化為相應(yīng)的對象。比如有rowview.xml布局文件(比如在自定義Adapter的時候,用作ListView中的一行的內(nèi)容的布局),假定在自定的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);

有時候居然也會發(fā)現(xiàn)rowview非空,但tv_contact_id和tv_contactname都是null!仔細看代碼,怎么也看不出錯誤來。到底是什么原因造成的呢?答案是Eclipse造成的,要解決這個問題,需要這個項目clean一次(Project菜單 -> Clean子菜單),這樣就OK了。

4.對于自定義view,可能是構(gòu)造方法不對

總結(jié)

以上是生活随笔為你收集整理的android findviewbyid定义成静态,findViewById 为null???的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。