1

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

4

1 回答 1

2

在您的ViewGroup班级内,只需getContext()从班级内的任何地方拨打电话即可。在从您实际上不需要调用 的类中获取上下文的基础上进行
编辑,而应该直接调用。
ViewGroupgetContext().getResources()getResources()

于 2015-11-01T07:23:40.430 回答