用eclipse新建乙個簡單應用,新增乙個簡單按鈕,顯示沒有問題,就是新增響應後,一執行就出錯退出。
除錯一下,發現 findviewbyid函式返回null。
在網上找了好多,被搞的暈了,後來才找到原因。
以前android 沒有fragment,新增的按鈕都加到activity_main.xml,現在有fragment,新增的按鈕都加到fragment_main.xml。
在oncreate中, setcontentview(r.layout.activity_main); 所以 contentview是activity_main, 當然找不到按鈕。
而我以前都習慣在oncreat中初始化控制項,所以出現這個問題。
在oncreateview中,可以找的fragment_main,如下呼叫返回正常:
view rootview = inflater.inflate(r.layout.fragment_main, container, false);
mbutton = (button)rootview. findviewbyid(r.id.button1);
如果不是在oncreatview裡,可以下面方式:
layoutinflater inflater = (layoutinflater)getsystemservice(context.layout_inflater_service);
view rootview = (view)inflater.inflate(r.layout.fragment_main, null);
mbutton = (button)rootview. findviewbyid(r.id.button1);
inflate和findViewById方法對比
inflate 作用就是將xml定義的乙個布局找出來,但僅僅是找出來而且隱藏的,沒有找到的同時並顯示功能。最近做的乙個專案就是這一點讓我迷茫了好幾天。android上還有乙個與inflate 類似功能的方法叫findviewbyid 二者有時均可使用,但也有區別 區別在於 如果你的activity裡...
對煩人的findViewById說再見吧!
下面的這個函式參考自一條微博 public t int id 說明這是乙個泛型方法,並且這個泛型是view的子類,返回值是泛型t,函式名借鑑jquery,使用美元符 例項呼叫 textview tv r.id.tv 為了避免在每個activity中重複寫這個函式,可以寫乙個自己的myactivity...
解決NSData轉NSString返回nil的問題
在使用initwithdata 等方法將 nsdata轉換成nsstring時,如果nsdata的內容含有非encoding編碼的字元,將會返回nil。sdk文件如下 instancetype initwithdata dataencoding encoding return value annss...