通過ID找到Layout的 VIEW控件。,比如你的控件Button ID為"@+id/button01" 就可以通過這樣Button btn=(Button)findViewById(R.id.button01")找到控件。。這時這個btn就是代表這個按鈕。。你可以理解成JS的getElementById()。
Android中FindViewById()是一個非常常用的函數,位於android.app.Activity包中。該函數利用我們在XML文件中定義的View的id屬性來獲取相應的View對象。findViewById()屬於API Level 1, 對應的android版本是android1.0,由此,可以看出,該函數是android早期版本中就有的。順便說一下, android目前市場上已商用的版本及其對應的API Level如下:
android 1.0 API Level 1
android 1.1 API Level 2
android 1.5 API Level 3
android 1.6 API Level 4
android 2.0 API Level 5
android 2.0.1 API Level 6
android 2.1 API Level 7
android 2.2 API Level 8
1、參數錯誤:findViewById的參數是一個View的ID,如果在XML文件中沒定義相應的ID,則程序會
善意的告訴你:XXX cannot be resulved。此時,補充定義就可以瞭。
2、未指定調用佈局:findViewById()的調用與具體的佈局有關,默認的是main.xml中的佈局,函數前
沒有佈局指示。不過,當我們在main.xml描述的佈局中,添加其它佈局時,利用該函數獲
取所添加佈局中的View,則需在調用時,添加佈局名,形式如下:
addLayout.findViewById(),如果不這麼做,程序編譯時有時不會報錯,但運行時會
提示遇到異常,並強制關閉應用。
3、命名沖突:這個錯誤可能不是很常見,不過,要是沒有遇到過,猛的來這麼一下,還真讓人 有點懵。
呵呵,本人就犯過這樣的錯誤。解釋下,這裡的命名沖突是指當前工程中定義的類與
android在Framework中提供的名字相同,這樣的話,當前工程文件中,會優先使用本工
程中的定義。當然,使用findViewById()函數時,發生這種錯誤必須滿足以下幾個條件:
一是:需要在當前工程中利用ID(xml中定義)來查找對應的View對象;
二是:查找的View類名恰好與本工程中已有的類定義相同
三是:同名的兩個類實例化後產生的對象類型不同,如:一個是View,一個是Activity。
摘自 小南的博客