这是我之前question的后续内容,其中@pskink建议我实现自定义ViewGroup,它将绘制我需要的内容。我成功地使用了硬编码值的原型。我想将它移动到更高级别,我可以从Activity传递初始化参数。我需要传递资源ID并打开要在onPaint方法中使用的图像。
这是活动。我可以在那里获取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之前传递初始化参数。 Activity有许多onXY()方法要覆盖,但没有类似的ViewGroup方法。它的生命周期是什么?
答案 0 :(得分:2)
在ViewGroup
课程内,只需从班级内的任何地方拨打getContext()
的修改
除了从ViewGroup
课程获取您实际上不需要致电getContext().getResources()
的语境外,您应该直接致电getResources()
。