2015-11-01 31 views
1

這是我以前的question的後續,其中@pskink建議我實現自定義ViewGroup,它將繪製我需要的東西。我成功地使用硬編碼值的原型。我想把它移到更高層次,我可以從Activity傳遞初始化參數。我需要傳遞一個資源ID並打開要用於onPaint方法的圖像。從活動傳遞資源ID以初始化自定義ViewGroup

這是活動。我可以在那裏獲得ViewGroup實例,但它已經實例化,因此在其構造函數中傳遞資源ID沒有任何意義。我試圖使用setter,但我需要一個Context來從資源初始化Drawable。

protected void onCreate(Bundle state) { 
    super.onCreate(state); 
    setContentView(R.layout.activity_puzzle); 
    hiddenPicture = (TileGroupLayout) findViewById(R.id.hidddenPictureArea); 
    hiddenPicture.setPictureResource(R.drawable.pic_cute_girl); 

ViewGroup的setter沒有像構造函數那樣的上下文。

public void setPictureResource(int resourceId) { 
    int pictureResource = resourceId; 
    mCustomImage = context.getResources().getDrawable(R.drawable.pic_cute_girl); 
    pictureRect = mCustomImage.getBounds(); 
} 

如何從這個問題得到?我需要在繪製ViewGroup之前傳遞初始化參數。活動有很多onXY()方法可以覆蓋,但沒有類似的ViewGroup方法。它的生命週期是什麼?

+0

k0sh是對的:你可以使用'View#getContext' – pskink

+0

我的方法是對的嗎?使用ViewGroup的setter從Activity的onCreate傳遞參數,然後覆蓋onDraw? –

+0

是的,爲什麼不呢? – pskink

回答

2

在你的ViewGroup課堂內,只需在課堂內的任何地方撥打電話getContext()即可。
編輯
在得到來自ViewGroup類上下文的頂部,你其實並不需要調用getContext().getResources()相反,你應該直接調用getResources()

+0

謝謝我感動進一步。讓我們看看它是否會起作用。我對生命週期特別感興趣。 –