0

私はこれを持っていましたが、うまくいきました:

public static Integer[] photos = new Integer[]    
{R.drawable.photo1,R.drawable.photo2,R.drawable.photo3};

this.setImageResource(photos[mCellNumber]);

しかし、代わりにファイル名を XML ファイルに入れたいと思い、次のようにしました。

<?xml version="1.0" encoding="UTF-8"?>
<resources>
<array name="Red">
    <item>R.drawable.photo1</item>
    <item>R.drawable.photo2</item>
    <item>R.drawable.photo3</item>
</array>
</resources>

そして、次のようなものを試しました:

String[] month = getResources().getStringArray(R.array.Red);
this.setImageResource(month[mCellNumber]);

..と..

String[] month = getResources().getStringArray(R.array.Red);
int bla = Integer.parseInt(month[mCellNumber]);
this.setImageResource(bla);

機能しない理由 (文字列/整数) は理解していますが、文字列を整数変換部分に処理する簡単な方法や、文字列をパラメーターとして setImageResource を使用する簡単な方法は見つかりませんでした。助言がありますか?

4

1 に答える 1

1
String[] month = getResources().getStringArray(R.array.Red);
int bla = Integer.parseInt(month[mCellNumber]);

文字列が有効な数値ではないため、例外 R.drawable.photo1 がスローされるようです。

あなたは写真1、写真2、写真3のような名前だけを保存して試してから、以下のようにします:

...

Android - ドローアブル ID をカスタム XML ファイルに保存する

「joe_pic」のような名前を保存するだけで試すことができ、この方法で取得できます

..

   String uri = "drawable/icon";

    // int imageResource = R.drawable.icon;
    int imageResource = getResources().getIdentifier(uri, null, getPackageName());

    ImageView imageView = (ImageView) findViewById(R.id.myImageView);
    Drawable image = getResources().getDrawable(imageResource);
    imageView.setImageDrawable(image);
}

ただし、「R.drawable.joe_pic」を既に追加している場合は、String.split を使用して 3 番目の文字列部分を取得できます。

于 2012-06-26T17:40:59.427 に答える