1

これは、@pskink から、必要なものを描画するカスタム ViewGroup を実装するようにアドバイスされた以前の質問のフォローアップです。ハードコードされた値を使用したプロトタイプで成功しました。アクティビティから初期化パラメーターを渡すことができるレベルに移動したいと考えています。リソース ID を渡し、onPaint メソッドで使用する画像を開く必要があります。

これが活動です。そこで ViewGroup インスタンスを取得できますが、既にインスタンス化されているため、コンストラクターでリソース ID を渡す意味がありません。セッターを使用しようとしましたが、リソースから Drawable を初期化するには Context が必要です。

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 のセッターには、コンストラクターのようなコンテキストがありません。

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

この問題からどのように取得しますか? ViewGroup を描画する前に、初期化パラメーターを渡す必要があります。アクティビティにはオーバーライドする onXY() メソッドが多数ありますが、同様の ViewGroup メソッドはありません。そのライフサイクルは何ですか?

4

1 に答える 1

2

クラス内で、クラス内のどこからでもViewGroup呼び出すだけです。実際に呼び出す必要のないクラス からコンテキストを取得することに加えて、直接呼び出す必要がありますgetContext()

ViewGroupgetContext().getResources()getResources()

于 2015-11-01T07:23:40.430 に答える