Android:findViewById獲取控件返回為空問題解決


轉自:http://www.cnblogs.com/blog-for-technology/archive/2013/04/08/3008343.html

Android程序中,有時候需要加載非原來activityxml布局中的控件,來使Android程序的界面更加豐富。

  我本身是在使用ViewFlipper中遇到的問題。

 

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);        

 }

 

眾所周知,我們通過調用findViewById來獲取布局中的控件元素,但是在我運行的時候發現出現了 java.lang.NullPointerException的錯誤。一開始我以為是獲取的view還是為空,但最終發現的是獲取的ImageView是空的。因為在R.java中已經成功生成myviewimageviewid。經過一些時間的搜索查詢,發現我們在重寫AdaptergetView()函數時,獲取一個控件元素是通過

 

 

 holder.imageView=(ImageView)convertView.findViewById(R.id.imageView);

 

這樣的形式去獲取的。

  所以我突然想到,如果在activity中直接調用findViewById方法,它的完整形式是this.findViewById().而我所需要的控件是不存在本身activity的布局中的,所以在獲取時改為

 

 

ImageView view=(ImageView)view.findViewById(R.id.imageview);

 

即通過控件所在的view調用findViewById方法,就可以獲取到正確的控件了。

  這個本身不是什么大問題,但是如果不注意還是會花費一定的時間,在此我只是為自己做好筆記,也為廣大開發Android的朋友提供便利。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM