我申请了一个关于firebase的问题。在问答部分有一些按钮。但是当有连续的点击时,下一个问题的答案也会被点击。我该如何解决这个问题呢?
这是QuestionActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_question);
question = findViewById(R.id.question);
qCount = findViewById(R.id.question_num);
timer = findViewById(R.id.coundown);
option1 = findViewById(R.id.option1);
option2 = findViewById(R.id.option2);
option3 = findViewById(R.id.option3);
option4 = findViewById(R.id.option4);
option1.setOnClickListener(this);
option2.setOnClickListener(this);
option3.setOnClickListener(this);
option4.setOnClickListener(this);
这是OnClick方法
@Override
public void onClick(View view) {
int selectedOption = 0;
switch (view.getId()) {
case R.id.option1:
selectedOption = 1;
break;
case R.id.option2:
selectedOption = 2;
break;
case R.id.option3:
selectedOption = 3;
break;
case R.id.option4:
selectedOption = 4;
default:
}
// countdown.cancel();
checkAnswer(selectedOption, view);
}
这是Question.java
public class Question {
String question;
String optionA;
String optionB;
String optionC;
String optionD;
int correctAns;
public Question(String question, String optionA, String optionB, String optionC, String optionD, int correctAns) {
this.question = question;
this.optionA = optionA;
this.optionB = optionB;
this.optionC = optionC;
this.optionD = optionD;
this.correctAns = correctAns;
}
发布于 2020-06-25 11:37:57
对此有两种解决方案。在onClick类的开头放入
option1.setOnClickListener(null);
option2.setOnClickListener(null);
option3.setOnClickListener(null);
option4.setOnClickListener(null);
然后,当您想问另一个问题时,重新分配onClickListeners。
或者你可以这样做:
boolean questionBeingAsked = true;
@Override
public void onClick(View view) {
int selectedOption = 0;
if(questionBeingAsked){
switch (view.getId()) {
case R.id.option1:
selectedOption = 1;
break;
case R.id.option2:
selectedOption = 2;
break;
case R.id.option3:
selectedOption = 3;
break;
case R.id.option4:
selectedOption = 4;
default:
}
// countdown.cancel();
questionBeingAsked = false;
checkAnswer(selectedOption, view);
}
}
然后,当你想问一个问题时,只需运行:
questionBeingAsked = true;
https://stackoverflow.com/questions/62555035
复制