如何解决阻止用户输入多个答案
我创建了一个正确/错误的测验应用程序。在该应用程序中,我有4个按钮,即True,False,prevIoUs(返回上一个问题),next(获得下一个问题)。我想添加一个功能,当用户单击“是”或“假”按钮时,该按钮将禁用该问题,因此用户只能单击一个问题。
我试图通过使用button.setEnabled(false)禁用按钮,但是当我单击上一个按钮或下一个按钮时,启用了true / false按钮。我希望用户只能单击一次答案,无论如何很多用户遍历这个问题。
我尝试在以前的单击按钮上调用setEnabledButton(),但是它禁用了该按钮,但是它也禁用了用户是否单击答案。
Button btrue,bfalse,bnext,bprevIoUs;
TextView tquestion;
int mCurrentIndex=0;
Questions[] questionbank;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btrue=findViewById(R.id.true_button);
bfalse=findViewById(R.id.false_button);
bnext=findViewById(R.id.next_button);
tquestion=findViewById(R.id.question_text);
bprevIoUs=findViewById(R.id.prevIoUs_button);
questionbank = new Questions[]
{
new Questions(R.string.greater,false),new Questions(R.string.Pm,true),new Questions(R.string.capital,new Questions(R.string.china,new Questions(R.string.Richer,new Questions(R.string.company,new Questions(R.string.company1,};
update();
bnext.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int s=questionbank.length;
if( mCurrentIndex<=s )
{
if (mCurrentIndex + 1 < questionbank.length) {
mCurrentIndex++;
}
else
{ Toast.makeText(getApplicationContext(),"not more question",Toast.LENGTH_SHORT).show();
}
update();
}
}
});
btrue.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkAnswer(true);
}
});
bfalse.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkAnswer(false);
}
});
bprevIoUs.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mCurrentIndex > 0) {
mCurrentIndex = (mCurrentIndex - 1);
update();
}
else
{ Toast.makeText(getApplicationContext(),"cant go back",Toast.LENGTH_SHORT).show(); }
}
});
}
public void update()
{
int ques = questionbank[mCurrentIndex].getmTextResid();
tquestion.setText(ques);
setButtonEnabled(true);
}
private void checkAnswer(boolean userpressedTrue)
{
boolean answerIsTrue =
questionbank[mCurrentIndex].ismTrueAnswer();
int messageResId = 0;
if (userpressedTrue == answerIsTrue) {
setButtonEnabled(false);
messageResId = R.string.correct_toast;
} else {
setButtonEnabled(false);
messageResId = R.string.incorrect_toast;
}
Toast.makeText(this,messageResId,Toast.LENGTH_SHORT)
.show();
}
private void setButtonEnabled(boolean enabled) {
btrue.setEnabled(enabled);
bfalse.setEnabled(enabled);
}
}
解决方法
在Questions类中,您可以创建一个方法,
public class Questions {
boolean isQuestionAnswered;
public boolean isQuestionAnswered() {
return isQuestionAnswered;
}
public void setQuestionAnswered(boolean questionAnswered) {
isQuestionAnswered = questionAnswered;
}
}
private void checkAnswer(boolean userPressedTrue)
{
questionbank[mCurrentIndex].setQuestionAnswered(true);
boolean answerIsTrue =
questionbank[mCurrentIndex].ismTrueAnswer();
int messageResId = 0;
if (userPressedTrue == answerIsTrue) {
setButtonEnabled(false);
messageResId = R.string.correct_toast;
} else {
setButtonEnabled(false);
messageResId = R.string.incorrect_toast;
}
Toast.makeText(this,messageResId,Toast.LENGTH_SHORT)
.show();
}
public void update()
{
int ques = questionbank[mCurrentIndex].getmTextResid();
tquestion.setText(ques);
if(questionbank[mCurrentIndex].isQuestionAnswered())
setButtonEnabled(false);
else
setButtonEnabled(true);
}
尝试一下,检查是否可以解决您的问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。