代码:
private void updateQuestion() {
mDatabaseReference.child("Users").child(RecieversId).child("Quiz").child("Question" + mQuestionNumber).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String question = dataSnapshot.child("Question").getValue().toString();
answer = dataSnapshot.child("Answer").getValue().toString();
option1 = dataSnapshot.child("Option1").getValue().toString();
option2 = dataSnapshot.child("Option2").getValue().toString();
option3 = dataSnapshot.child("Option3").getValue().toString();
option4 = dataSnapshot.child("Option4").getValue().toString();
que.setText(question);
opt1.setText(option1);
opt2.setText(option2);
opt3.setText(option3);
opt4.setText(option4);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
opt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mQuestionNumber++;
updateQuestion();
qn.setText("Quesion : " + mQuestionNumber);
if (option1.equals(answer)) {
opt1.setBackgroundColor(Color.GREEN);
mScore++;
sco.setText("Score : " + mScore);
updateQuestion();
} else
opt1.setBackgroundColor(Color.RED);
sco.setText("Score : " + mScore);
updateQuestion();
}
});
opt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mQuestionNumber++;
updateQuestion();
qn.setText("Quesion : " + mQuestionNumber);
if (option2.equals(answer)) {
opt2.setBackgroundColor(Color.GREEN);
mScore++;
sco.setText("Score : " + mScore);
updateQuestion();
} else
opt2.setBackgroundColor(Color.RED);
sco.setText("Score : " + mScore);
updateQuestion();
}
});
opt3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mQuestionNumber++;
qn.setText("Quesion : " + mQuestionNumber);
if (option3.equals(answer)) {
opt3.setBackgroundColor(Color.GREEN);
mScore++;
sco.setText("Score : " + mScore);
updateQuestion();
} else
opt3.setBackgroundColor(Color.RED);
sco.setText("Score : " + mScore);
updateQuestion();
}
});
opt4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mQuestionNumber++;
qn.setText("Quesion : " + mQuestionNumber);
if (option4.equals(answer)) {
opt4.setBackgroundColor(Color.GREEN);
mScore++;
sco.setText("Score : " + mScore);
updateQuestion();
} else
opt4.setBackgroundColor(Color.RED);
sco.setText("Score : " + mScore);
updateQuestion();
}
});
}
}
只是尝试制作一个测验应用程序...每次按钮点击后(在用户选择答案后)调用updatequestion ...如果正确,则按钮变为绿色,如果错误,则按钮变为红色......但是该颜色仍然保持不变到下一个问题...如何使它获得xml文件中提到的颜色...这是默认的按钮颜色
答案 0 :(得分:2)
内部更新问题,重置所有textview的颜色,因为您正在重复使用这些textview,并且textview的状态将保持不变,因此请使用
mDatabaseReference.child("Users").child(RecieversId).child("Quiz").child("Question" + mQuestionNumber).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String question = dataSnapshot.child("Question").getValue().toString();
answer = dataSnapshot.child("Answer").getValue().toString();
option1 = dataSnapshot.child("Option1").getValue().toString();
option2 = dataSnapshot.child("Option2").getValue().toString();
option3 = dataSnapshot.child("Option3").getValue().toString();
option4 = dataSnapshot.child("Option4").getValue().toString();
//-------------------
opt1.setBackgroundColor(Color.TRANSPARENT);
opt2.setBackgroundColor(Color.TRANSPARENT);
opt3.setBackgroundColor(Color.TRANSPARENT);
opt4.setBackgroundColor(Color.TRANSPARENT);
//-------------------
que.setText(question);
opt1.setText(option1);
opt2.setText(option2);
opt3.setText(option3);
opt4.setText(option4);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 1 :(得分:2)
最简单的方法是将其添加到onDataChanged()
方法中:
opt1.setBackgroundColor(<default_color_reference>);
opt2.setBackgroundColor(<default_color_reference>);
opt3.setBackgroundColor(<default_color_reference>);
opt4.setBackgroundColor(<default_color_reference>);
设置文本后立即生效。并确保<default_color_reference>
与您想要的原始背景颜色相匹配,假设您在XML文件中专门设置了它。