从 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()
。
这是我之前 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()
。