質問: androidstdioのjavaでdrawableにある画像を配列化したいと思い以下のようにしました。 public static class tabemono{ static int[] gazou new int[3]; {
回答: リソースIDの配列化、それを参照した画像表示は可能です。 しかし、 初期化タイミングが間違っています。 【問題点】 tabemono { static int[] gazou = new int[3]; { mono[1]=R.drawable.gazou1; mono[2]=R.drawable.gazou2; mono[3]=R.drawable.gazou3; } } 「gazou」が配列変数なのに mono変数に入れてるのは誤記ですか? そして、配列要素番号は0, 1, 2ですが、 1, 2, 3で参照してます。 要素番号3にアクセスしたとき、配列外参照で落ちますよ でも多分、アプリが落ちてはないですよね? なぜ落ちないかというと、この代入は実行されていないからです。つまり、配列は空のままです。 クラス内に{}のみのブロックを作ると イニシャライザといって、インスタンス生成時に呼ばれます。 なので、このクラス(tabemono)をインスタンス化(newする)タイミングで配列にデータを入れるコードになっています。 恐らくこのクラスはstaticでのみ使われる想定です?なので、配列にデータを入れるタイミングがなく、ずっと空だから画像が表示されません。 【対策】 初期化時に代入しましょう static int[] gazou = { R.drawable.gazou1 , R.drawable.gazou2 , R.drawable.gazou3 }; または 静的イニシャライザで代入しましょう static int[] gazou = new int[3]; static { // ★{}の前にstaticを付ける gazou[0]=R.drawable.gazou1; gazou[1]=R.drawable.gazou2; gazou[2]=R.drawable.gazou3; }