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

Passing resource id from Activity to initialize custom ViewGroup

这是我之前 question 的后续内容,其中 @pskink 建议我实现自定义 ViewGroup 来绘制我需要的内容。我成功地制作了一个使用硬编码值的原型。我想将它移动到更高的级别,我可以从 Activity 传递初始化参数。我需要传递资源 ID 并打开要在 onPaint 方法中使用的图像。

这是activity。我可以在那里获取 ViewGroup 实例,但它已经实例化,因此在其构造函数中传递资源 ID 毫无意义。我尝试使用 setter,但我需要一个上下文来从资源中初始化 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没有构造函数那样的context

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

如何解决这个问题?我需要在绘制 ViewGroup 之前传递初始化参数。 Activity 有许多要覆盖的 onXY() 方法,但没有类似的 ViewGroup 方法。它的生命周期是什么?

在您的 ViewGroup class 内,只需从 class.
内的任何地方调用 getContext() 编辑
除了从 ViewGroup class 获取上下文之外,您实际上不需要调用 getContext().getResources() 而应该直接调用 getResources()