Java 安卓:链接到特定按钮的随机图像?
大家好,我现在正在玩android/Java代码。我正在使用的小程序随机选择并显示一幅图像。这很好用,但现在我想做的是将某些图像链接到一个按钮 例如,如果从可绘制屏幕上显示猫的图片,则按下猫按钮将拾取下一个随机图像,如果是狗的图像,则狗按钮将是唯一正确的输入。如果按下错误的按钮,程序将通过屏幕进入游戏 目前,我已经设置了这样的代码启动一个随机图像,如果显示和按下一个按钮,无论图像是什么,它将加载下一个。以下是我迄今为止使用的部分代码:Java 安卓:链接到特定按钮的随机图像?,java,android,image,button,random,Java,Android,Image,Button,Random,大家好,我现在正在玩android/Java代码。我正在使用的小程序随机选择并显示一幅图像。这很好用,但现在我想做的是将某些图像链接到一个按钮 例如,如果从可绘制屏幕上显示猫的图片,则按下猫按钮将拾取下一个随机图像,如果是狗的图像,则狗按钮将是唯一正确的输入。如果按下错误的按钮,程序将通过屏幕进入游戏 目前,我已经设置了这样的代码启动一个随机图像,如果显示和按下一个按钮,无论图像是什么,它将加载下一个。以下是我迄今为止使用的部分代码: image = (ImageView) findVi
image = (ImageView) findViewById(R.id.Hold_Image);
Random rand = new Random();
int rndN = rand.nextInt(16)+ 1 ;
String imgName = "img" + rndN;
int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
image.setImageResource(id); //creating the random selector
cat = (Button) findViewById(R.id.Cat);
dog = (Button) findViewById(R.id.Dog);//button setup
setButtonOnClickListeners();
}
private void setButtonOnClickListeners(){//button code
cat.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
if(???){//what should call the image number?
Random rand = new Random();
int rndN = rand.nextInt(16)+ 1 ;
String imgName = "img" + rndN;
int id = getResources().getIdentifier(imgName, "drawable", getPackageName()); }//next random image upon correct button
Word.setImageResource(id);
else{
//game over screen code(yet to write)
}
}
});
}
更新1:这是我尝试使用Vlads方法的代码。我的问题是按钮没有任何作用,随机图像也不起作用(每次只显示一个相同的图像)
首先,给不同类型的图片起一个不同的名字,就像所有的狗图片dog1,dog2。。。和所有猫的图片cat3,cat4确保数字保持不变。然后将imgName定义为类变量并添加此方法:将“String imgName=“img”+rndN;”行替换为:
private void nextImage() {
Random rand = new Random();
int rndN = rand.nextInt(16)+ 1 ;
String imgName = "dog" + rndN;
int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
if (id == 0) {
imgName = "cat" + rndN;
id = getResources().getIdentifier(imgName, "drawable", getPackageName());
}
image.setImageResource(id);
}
现在将onClick方法替换为以下方法:
@Override
public void onClick(View v) {
if(imgName.startsWith("dog") && v.getId() == R.id.Dog ||
imgName.startsWith("cat") && v.getId() == R.id.Cat) {
nextImage();
} else {
//game over screen code(yet to write)
}
}
显然,还可以用nextImage()替换“image=…”和“cat=…”之间的部分。@Phil3992我修正了我的答案。代码现在应该可以按预期工作了。@Phil3992我马上看到一件事:您应该只调用setButtonConClickListeners()一次:在onCreate()中。正如我在回答的最后所说的:在dog=(按钮)findViewById(R.id.theDog)之后,替换onCreate中的所有内容;使用nextImage();
@Override
public void onClick(View v) {
if(imgName.startsWith("dog") && v.getId() == R.id.Dog ||
imgName.startsWith("cat") && v.getId() == R.id.Cat) {
nextImage();
} else {
//game over screen code(yet to write)
}
}