【发布时间】:2018-10-09 12:28:28
【问题描述】:
我正在尝试为自闭症儿童创建一个测验。我想使用图像来获得答案,或者更好的是,带有类似 https://gyazo.com/2309e055184a4840c23a07bda0a5bf63 的图像的按钮。我的应用程序可以运行,但是当我做测验时,我无法得到正确的答案,只有错误的答案。似乎 if 语句不起作用。我想要四个静态答案,并且只有 ImageViews 更改。我不知道该怎么办。
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;
}
}
【问题讨论】:
-
你试过打印出 v.getId() 是吗?这是一个提示。在 v.getid() 上运行 system.out.println,我想你会找到你的解决方案
-
代码由自闭症程序员正确地重新缩进。虽然我认为它过于复杂,但在使用
resId时 - 而不是某种矩阵,它可以区分是非。我会提示View.setTag()和View.getTag()。 -
v.getId() == (R.id.imageview1) 是多余的,因为 v 是被点击的视图,每个视图都有自己的 setOnClickListener()。
-
v.getId() == R.id.imageview2 所有这些都是多余的,删除那些也
-
你能给我举个例子,只为第一个按钮提供标签吗?谢谢你的时间@MartinZeitler
标签: android imagebutton