我正在开发一个可以生成多项选择题的应用。当用户选择一个按钮(单选按钮)时,它会在所选答案旁边放置一个 X(如果错误)或V(如果正确)的图像。我创建了包含所有按钮的RadioGroup并使用了OnCheckedChanged Listener
。我追踪并放置了打印语句,以确保它有效。但是,除了第一次用户按下之外,它根本不显示可绘制的图像。
所以换句话说,用户会按下其中一个按钮,会看到反馈(V或X),但是然后按下一个不同的按钮,看不到任何东西,虽然逻辑DOES工作(我在if里面使用了print语句) )。我使用SetCompoundDrawableWithIntrinsicBounds
它就可以了。有没有人知道如何解决这个问题?
我花了最后8个小时来处理这个问题并且非常沮丧。
听众代码:
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
//get the index of the correct answer
int indexAnswer = Integer.parseInt(myQuestion.getAnswer()) - 1;
for (int i = 0; i < possibleAnswers.length; i++) {
//if the button at position i was pressed
if (checkedId == possibleAnswers[i].getId()) {
//if its the correct answer
if (i == indexAnswer) {
Log.i("MyAcitvity", "thats correct");
possibleAnswers[i].setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.checkmark, 0);
}
else {
Log.i("MyActivity", "thats wrong");
possibleAnswers[i].setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.wrong, 0);
}
} else {
possibleAnswers[i].setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
}
}
}
});
谢谢你们有一个美好的一天。
答案 0 :(得分:0)
我认为最好先拿出单选按钮,然后再改变它。
View radioButton = group.findViewById(i);
radioButton.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.checkmark, 0);
为了更好的答案,请添加所有代码,特别是与您的无线电组相关的代码