1

私が使用する写真をImageButtonランダムに選択しようとしています。

このコードは機能すると思いますが、リソースを として渡すときに問題があるようStringです。

    ImageButton getClickTime = (ImageButton) findViewById(R.id.clicker);

    Random generator = new Random();
    int generatedRandom = generator.nextInt(10) + 1;
    String randomImage = "R.drawable.bg" + (String.valueOf(generatedRandom)) ;
    Drawable replaceImage = getResources().getDrawable((int) randomImage);

    getClickTime.setImageDrawable((Drawable) replaceImage);

ints、Strings、drawables、およびs のキャストで少し混乱しているようですCharSequence

ランダムに選択した画像リソースを手動で入力すると、機能します。しかし、をStringテキスト ボックスに渡すと、手動で入力したときとまったく同じように書かれていることがわかります。

ここで私が間違っていることを誰かが見ることができますか?

前もって感謝します

4

3 に答える 3

3

あなたの問題は、Android がリソース ID を使用する方法を誤解していることです。このRファイルintには、アプリに含まれるリソースにマップされる ID が保持されます。参照を にdrawableキャストしてリソースを参照しようとしています。それは不可能であり、意味がありません。Stringint

私がお勧めするのは、ランダムに選択したいint[]すべての の ID を保持する を作成することです。drawable

    int[] imageIds = { 
            R.drawable.bg1,
            R.drawable.bg2,
            R.drawable.bg3,
            R.drawable.bg4,
            R.drawable.bg5
            // etc for as many images you have
    };

drawable次に、それらのIDの 1 つをランダムに選択し、それを に設定しますImageButton

    ImageButton getClickTime = (ImageButton) findViewById(R.id.clicker);
    Random generator = new Random();
    int randomImageId = imageIds[generator.nextInt(imageIds.length)];
    getClickTime.setImageResource(randomImageId);
于 2013-04-14T20:53:41.467 に答える