2016-08-16 35 views
0

我無法理解在Android Studio中下面的代碼背後的邏輯,當我們創建了一個按鈕的一個實例:創建按鈕實例與創建普通類實例的邏輯?

Button btn = (Button) findViewById(R.id.btnRegister); 

從我知道一個類的實例的定義如下: MyClass的將myInstance =新MyClass的(MyParameter)

如果我們應用上述邏輯按鍵代碼應該是這樣的:

按鈕BTN =新按鈕(findViewById(R.id.btnRegister));

但實際上上面的代碼不起作用。爲什麼「按鈕」代碼很難理解,並且與單純的類代碼無關?在上面的例子中,括號中的「(Button)」是什麼意思?

謝謝

回答

3

查找視圖行不會創建按鈕。當您調用setContentView時,您的視圖都是使用框架的標準新語法創建的。 setContentView函數解析你的xml並創建適當的類。 findViewById所做的是搜索它在setContentView中創建的視圖,檢查具有匹配id的ID並返回它。

至於什麼(按鈕) - 它是一個標準的Java演員。 findViewById返回一個View對象。但View的某些子類具有在視圖中未找到的高級功能。要使用它們,你必須有一個正確類型的對象。所以你把它轉換成正確的類型(如果它不是正確的類型,將會拋出異常)。例如,你需要有一個TextView來調用setText,一個普通的View沒有這個功能。