在Android程序中,有時(shí)候需要加載非原來(lái)activity中xml布局中的控件,來(lái)使Android程序的界面更加豐富。
我本身是在使用ViewFlipper中遇到的問(wèn)題。
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main); inflater=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);View view=inflater.inflate(R.layout.myview, null);ImageView view=(ImageView)findViewById(R.id.imageview); } 眾所周知,我們通過(guò)調(diào)用findViewById來(lái)獲取布局中的控件元素,但是在我運(yùn)行的時(shí)候發(fā)現(xiàn)出現(xiàn)了 java.lang.NullPointerException的錯(cuò)誤。一開(kāi)始我以為是獲取的view還是為空,但最終發(fā)現(xiàn)的是獲取的ImageView是空的。因?yàn)樵赗.java中已經(jīng)成功生成myview和imageview的id。經(jīng)過(guò)一些時(shí)間的搜索查詢(xún),發(fā)現(xiàn)我們?cè)谥貙?xiě)Adapter的getView()函數(shù)時(shí),獲取一個(gè)控件元素是通過(guò)
holder.imageView=(ImageView)convertView.findViewById(R.id.imageView);
這樣的形式去獲取的。
所以我突然想到,如果在activity中直接調(diào)用findViewById方法,它的完整形式是this.findViewById().而我所需要的控件是不存在本身activity的布局中的,所以在獲取時(shí)改為
ImageView view=(ImageView)view.findViewById(R.id.imageview);
即通過(guò)控件所在的view調(diào)用findViewById方法,就可以獲取到正確的控件了。
這個(gè)本身不是什么大問(wèn)題,但是如果不注意還是會(huì)花費(fèi)一定的時(shí)間,在此我只是為自己做好筆記,也為廣大開(kāi)發(fā)Android的朋友提供便利。
以上所述是小編給大家介紹的Android中findViewById獲取控件返回為空問(wèn)題的解決辦法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)武林網(wǎng)網(wǎng)站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注