私は小さなゲームを開発しようとしています。
ImageViewsに50枚の画像(4枚の画像のランダムな頻度)があるViewFlipperがあります。次に、ViewFlipperに表示できる同じ4つの画像を持つ4つのボタンがあります。
タスクは、右の画像が表示されたら右ボタンをクリックすることです。 (画像1が表示されたら、ボタン1を押す必要があります)
私の問題は、表示されたImageViewIDを取得する方法がわからないことです。
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();
}
});
このようにしてください:
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;
}
これがあなたを助けてくれますように、
int icon = getResources().getIdentifier([YOUR IMAGE NAME], "drawable",
getPackageName());