findViewById報錯

通過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。

摘自 小南的博客

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *