11

私は小さなゲームを開発しようとしています。

ImageViews に 50 枚の写真 (ランダムに 4 枚の写真) を持つ ViewFlipper があります。次に、ViewFlipper に表示できる同じ 4 つの画像を持つ 4 つのボタンがあります。

タスクは、右の画像が表示されたときに右のボタンをクリックすることです。(画像 1 が表示されたら、ボタン 1 を押す必要があります)

私の問題は、表示された ImageView id を取得する方法がわからないことです。

flipper.getCurrentView().getId() 

Idとして「-1」を与えます。しかし、「R.drawable.pic1」のIDが欲しい

これまでの私のコード:

私のローダーメソッド:

protected void loadPicturesIntoFlipper() {

    Random generator = new Random(); 
    pictures = new ArrayList();

    for(int i = 0; i < 50;i++){

        int number = generator.nextInt(4) + 1;

        if(number == 1){
            pic = R.drawable.pic1;
        }
        if(number == 2){
            pic = R.drawable.pic2;
        }
        if(number == 3){
            pic = R.drawable.pic3;
        }
        if(number == 4){
            pic = R.drawable.pic4;
        }

        pictures.add(pic);  
    }


    for(int i=0;i<pictures.size();i++)
    {

        setFlipperImage((Integer) pictures.get(i));
    }



}

私の挿入方法:

private void setFlipperImage(int res) {

    image = new ImageView(getApplicationContext());
    image.setBackgroundResource(res);
    flipper.addView(image);
}

私のチェック方法:

protected void check(int number, int id) {
    int code = 0;;

    if(number == 1){
        code = R.drawable.button_tip_finder;
    }
    if(number == 2){
        code = R.drawable.button_about_us;
    }
    if(number == 3){
        code = R.drawable.button_power_calculator;
    }
    if(number == 4){
        code = R.drawable.button_powerpedia;
    }



    if(code == id){
        test.setText(""+id);
    }
    else{
        test.setText(""+id);
    }


}

私はそれを次のように呼びます:

 button1.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                check(1,flipper.getCurrentView().getId());
                flipper.showNext();

                }
            });
4

2 に答える 2

16

次のようにします。

private void setFlipperImage(int res) {
    image = new ImageView(getContext());
    image.setBackgroundResource(res);
    image.setTag(res); //<------
    flipper.addView(image);
}

その後:

button1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                check(1,(Integer)flipper.getCurrentView().getTag());//<----
                flipper.showNext();
            }
        });

ところでelse、すべてのコードで使用してください。例:

 if(number == 1){
      pic = R.drawable.pic1;
 } else if(number == 2){
      pic = R.drawable.pic2;
 }  else if(number == 3){
       pic = R.drawable.pic3;
 }
于 2013-08-01T18:55:09.880 に答える
1

これがあなたを助けてくれますように

int icon = getResources().getIdentifier([YOUR IMAGE NAME], "drawable",
            getPackageName());
于 2014-04-04T05:51:56.527 に答える