【发布时间】:2014-08-11 14:50:09
【问题描述】:
嗨,所以我目前正在搞乱 android/Java 代码。我正在开发的小程序随机选择并显示图像。这工作得很好,但现在我想做的是将某些图像链接到一个按钮。
例如,如果从可绘制对象中显示猫的图片,则按下猫按钮将选择下一个随机图像,同样,如果是狗的图像,则狗按钮将是唯一正确的输入。如果按下了错误的按钮,程序将进入游戏结束屏幕。
目前我已经设置了代码,因此如果显示随机图像,则在按下按钮时,无论图像是什么,它都会加载下一个图像。这里是我到目前为止使用的部分代码:
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)
}
}
});
}
Update1:这是我尝试使用 Vlads 方法的代码。我遇到的问题是按钮没有做任何事情并且随机图像不起作用(每次只显示一张相同的图像)
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity1 extends Activity {
ImageView Word;
Button cat;
Button dog;
int max = 16;
int score = 0;
String imgName;
Random rand = new Random();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Random rand = new Random();
setContentView(R.layout.activity_main_activity1);
Word = (ImageView) findViewById(R.id.colour);
cat = (Button) findViewById(R.id.theCat);
dog = (Button) findViewById(R.id.theDog);
int rndN = rand.nextInt(16)+ 1 ;
String imgName = "cat" + rndN;
int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
if (id == 0) {
imgName = "dog" + rndN;
id = getResources().getIdentifier(imgName, "drawable", getPackageName());
Word.setImageResource(id);
}
}
private void nextImage() {
int rndN = rand.nextInt(16)+ 1 ;
String imgName = "cat" + rndN;
int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
if (id == 0) {
imgName = "dog" + rndN;
id = getResources().getIdentifier(imgName, "drawable", getPackageName());
}
setButtonOnClickListeners();
Word.setImageResource(id);
}
private void setButtonOnClickListeners(){
cat= (Button) findViewById(R.id.theCat);
cat.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View buttonClicked) {
if(imgName.startsWith("dog") && buttonClicked.getId() == R.id.theCat ||
imgName.startsWith("cat") && buttonClicked.getId() == R.id.theDog) {
nextImage();
} else {
//game over screen code(yet to write)
}
}
});}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_activity1, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
【问题讨论】:
标签: java android image button random