編輯:關於Android編程
在Android程序中,有時候需要加載非原來activity中xml布局中的控件,來使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中已經成功生成myview和imageview的id。經過一些時間的搜索查詢,發現我們在重寫Adapter的getView()函數時,獲取一個控件元素是通過
holder.imageView=(ImageView)convertView.findViewById(R.id.imageView);
這樣的形式去獲取的。
所以我突然想到,如果在activity中直接調用findViewById方法,它的完整形式是this.findViewById().而我所需要的控件是不存在本身activity的布局中的,所以在獲取時改為
ImageView view=(ImageView)view.findViewById(R.id.imageview);
即通過控件所在的view調用findViewById方法,就可以獲取到正確的控件了。
這個本身不是什麼大問題,但是如果不注意還是會花費一定的時間,在此我只是為自己做好筆記,也為廣大開發Android的朋友提供便利。
以上所述是小編給大家介紹的Android中findViewById獲取控件返回為空問題的解決辦法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對本站網站的支持!
DatePicker控件繼承自FrameLayout類,日期選擇控件的主要功能是向用戶提供包含年、月、日的日期數據並允許用戶對其修改。TimePicker控件繼承自Fra
初識 ToolbarToolbar 是 Android 5.0 開始推出的一個 Material Design 風格的導航控件,Google非常推薦使用 Toolbar
如果是列表(單列多行形式)的使用ListView,如果是多行多列網狀形式的優先使用GridView。<?xml version=1.0 encoding=u
首先來看看效果圖:1,SweepGradient(梯度渲染)public SweepGradient (float cx, float cy, int[] colors,