我正在尝试为自闭症 child 创建一个测验。我想使用图像作为答案或更好,带有图像的按钮像这样 https://gyazo.com/2309e055184a4840c23a07bda0a5bf63 .我的应用程序可以运行,但是当我做测验时,我无法得到正确的答案,只有错误的答案。好像 if 语句不起作用。我想要四个静态答案并且只有 ImageView
有变化。我不知道该怎么办。
public class Category2 extends AppCompatActivity{
private database2 database2 = new database2();
private ImageButton imageChoice1,imageChoice2,imageChoice3,imageChoice4;
ImageView iv_Pic;
private Button imageAnswerSpace;
int quizCount = 0;
int rightAnswerCount = 0;
private int mAnswer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_category2);
iv_Pic = (ImageView) findViewById(R.id.iv_Pic);
imageChoice1 = (ImageButton) findViewById(R.id.imageview1);
imageChoice2 = (ImageButton) findViewById(R.id.imageview2);
imageChoice3 = (ImageButton) findViewById(R.id.imageview3);
imageChoice4 = (ImageButton) findViewById(R.id.imageview4);
newQ();
imageChoice1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() == R.id.imageview1 && (v.getId() == mAnswer)) {
Toast.makeText(Category2.this, "correct", Toast.LENGTH_SHORT).show();
newQ();
} else {
Toast.makeText(Category2.this, "wrong", Toast.LENGTH_SHORT).show();
newQ();
}
}
});
imageChoice2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() == R.id.imageview2 && (v.getId()== mAnswer)){
Toast.makeText(Category2.this, "correct", Toast.LENGTH_SHORT).show();
newQ();
} else {
Toast.makeText(Category2.this, "wrong", Toast.LENGTH_SHORT).show();
newQ();
}
}
});
imageChoice3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() == R.id.imageview3 && (v.getId()== mAnswer)) {
Toast.makeText(Category2.this, "correct", Toast.LENGTH_SHORT).show();
newQ();
} else {
Toast.makeText(Category2.this, "wrong", Toast.LENGTH_SHORT).show();
newQ();
}
}
});
imageChoice4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() == R.id.imageview4 && (v.getId()== mAnswer)) {
Toast.makeText(Category2.this, "correct", Toast.LENGTH_SHORT).show();
newQ();
} else {
Toast.makeText(Category2.this, "wrong", Toast.LENGTH_SHORT).show();
newQ();
}
}
});
}
public void newQ() {
iv_Pic.setImageResource(database2.getImages(quizCount));
ImageView changeImage0 = findViewById(R.id.imageview1);
changeImage0.setImageResource(database2.getChoice1(quizCount));
ImageView changeImage1 = findViewById(R.id.imageview2);
changeImage1.setImageResource(database2.getChoice2(quizCount));
ImageView changeImage3 = findViewById(R.id.imageview3);
changeImage3.setImageResource(database2.getChoice3(quizCount));
ImageView changeImage4 = findViewById(R.id.imageview4);
changeImage4.setImageResource(database2.getChoice4(quizCount));
mAnswer = database2.getCorrectAnswer(quizCount);
if (quizCount < 4) {
quizCount++;
} else if (quizCount == 4) {
quizCount = 0;
}
}
}
public class database2 {
private Integer mImages[] = {
R.drawable.sad,
R.drawable.happy,
R.drawable.fear,
R.drawable.angry,
};
public static int mChoices[] [] = {
{
R.drawable.ic_angry,
R.drawable.ic_sad,
R.drawable.ic_scared,
R.drawable.ic_smiling
}, {
R.drawable.ic_angry,
R.drawable.ic_sad,
R.drawable.ic_scared,
R.drawable.ic_smiling
}, {
R.drawable.ic_angry,
R.drawable.ic_sad,
R.drawable.ic_scared,
R.drawable.ic_smiling
}, {
R.drawable.ic_angry,
R.drawable.ic_sad,
R.drawable.ic_scared,
R.drawable.ic_smiling
}
};
private Integer mCorrectAnswer[] = {
R.drawable.ic_sad,
R.drawable.ic_smiling,
R.drawable.ic_scared,
R.drawable.ic_angry
};
public Integer getImages(int a){
Integer image = mImages[a];
return image;
}
public Integer getChoice1(int a){
int choice0 = mChoices[a][0];
return choice0;
}
public Integer getChoice2(int a){
int choice1 = mChoices[a][1];
return choice1;
}
public Integer getChoice3(int a){
int choice2 = mChoices[a][2];
return choice2;
}
public Integer getChoice4(int a){
int choice3 = mChoices[a][3];
return choice3;
}
public Integer getCorrectAnswer(int a){
Integer answer = mCorrectAnswer[a];
return answer;
}
}
最佳答案
您总是看到“错误”答案的原因是您在 onClick 监听器中将 View ID 与可绘制 ID 进行比较。 v.getId()== mAnswer
。 mAnswer 是其中之一
private Integer mCorrectAnswer[] ={
R.drawable.ic_sad,
R.drawable.ic_smiling,
R.drawable.ic_scared,
R.drawable.ic_angry
};
而 v.getId() 是其中之一
R.id.imageview1
R.id.imageview2
R.id.imageview3
R.id.imageview4
作为短期解决方案,您可以更改 mCorrectAnswer 以使用 ImageView id 而不是 drawable id。然而,这可能难以维护,因此最好使用不依赖于资源 ID 的不同逻辑。
关于android - 测验图像答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52721092/