2011-07-02 126 views
2

我有一個Activity類。在onCreate中找到我需要的所有視圖應該非常好,然後只需引用這些字段,而不必致電findViewById。但是,這樣做可以嗎?我可以將View對象存儲在實例字段中嗎?

無法在運行時爲視圖分配不同的對象嗎?例如,findViewById(res1) == findViewById(res1)在任何時候都是如此嗎?

+0

嗨安迪...大多數代碼示例都是這樣做的,在onCreate中調用findViewById並擁有一個引用視圖的實例變量。 – JAL

+0

@JAL:我知道,但它仍然很有趣,如果他們正在做的是對的=) – Andy

+0

好的。另一種看待這個問題的方法是,你不能將參數傳遞給Activity的構造函數。 onCreate是構造函數,可以初始化視圖變量。我在網上有這個愚蠢的實驗。 https://sites.google.com/site/jalcomputing/home/mac-osx-android-programming-tutorial/stupid – JAL

回答

1

您可以在活動中爲您的視圖創建實例變量。並且

findViewById(res1) == findViewById(res1) 

只要佈局不再膨脹或對內容視圖進行其他更改(替換視圖),則爲true。

但是,請勿保持對活動持有視圖的活動時間比較長的對象的視圖引用。就像在一個Singleton! (見see Avoiding Memory Leaks

+0

這可能會有所幫助:方法setContentView *會使視圖膨脹並且引用會改變。 –

0

是的,你可以做到這一點。這就是我在工作中90%的時間裏完成的。防爆。

private ImageView mSomeImage;

公共類ACTIV延伸活動{

public void onCreate(Bundle saveinstancestate){ 
    Inialize your views here. 
} 

}

只有做到這一點,如果你需要,並用間前綴的成員變量。

這有幫助嗎?

相關問題