从Activity传递资源ID以初始化自定义ViewGroup

时间:2015-11-01 07:20:18

标签: android android-activity android-viewgroup

这是我之前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方法。它的生命周期是什么?

1 个答案:

答案 0 :(得分:2)

ViewGroup课程内,只需从班级内的任何地方拨打getContext()修改
除了从ViewGroup课程获取您实际上不需要致电getContext().getResources()的语境外,您应该直接致电getResources()