Ich arbeite an einer Android-Quiz-App und ich muss die Farbe der Tasten ändern, wenn eine falsche Antwort ausgewählt ist. Ich habe es eingerichtet, um die Farbe bereits zu ändern, wenn die Schaltfläche, die sie auswählen, falsch ist ODER wenn die Schaltfläche, die sie auswählen, richtig ist. Also, was ist der beste Weg, um auch die Farbe der Taste mit der richtigen Antwort zu ändern, wenn eine falsche Antwort ausgewählt ist? Wenn das Sinn macht. Grundsätzlich muss ich 2 Tasten haben, dass die Farbe geändert wird, wenn Sie die falsche Antwort auswählen. Rot für die falsche Antwort, die sie auswählten und grün für die richtige Antwort, die sie offensichtlich nicht auswählten. Die Antworten werden ebenfalls gemischt und sind nicht sicher, wie man weiß, welcher richtig ist.Quiz App, ändern Sie die Schaltfläche Farbe der falschen und richtigen Antwort auf die falsche Antwort Auswahl, Android
Versuchen Sie auch, Dinge zu buchstabieren und geben Sie mir Beispiele, wie ich nur meine Füße nass in all dies bekommen! Es wird in einem Fragment ausgeführt, und wenn jemand irgendwelche Hinweise darauf hat, wie man irgendwas rationalisiert oder schlechten Code repariert, dann lass es mich wissen, da ich gerade anfange zu lernen und all die Hilfe brauche, die ich bekommen kann.
Hier ist meine onActivityCreated
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
timesUp = (TextView)getActivity().findViewById(R.id.times_up);
timesUp.setVisibility(View.INVISIBLE);
Bundle c;
c = getArguments();
String setCategory = c.getString("category");
QuizHelper db = new QuizHelper(this.getActivity()); // my question bank class
quesList = db.getAllQuestions(setCategory); // this will fetch all quetonall questions
currentQ = quesList.get(qid);
txtQuestion = (TextView)getActivity().findViewById(R.id.txtQuestion);
// the textview in which the question will be displayed
// the buttons,
// the idea is to set the text of the buttons with the options from question bank
button1 = (Button)getActivity().findViewById(R.id.button1);
button2 = (Button)getActivity().findViewById(R.id.button2);
button3 = (Button)getActivity().findViewById(R.id.button3);
button4 = (Button)getActivity().findViewById(R.id.button4);
//set buttons white
button1.setBackgroundColor(Color.WHITE);
button2.setBackgroundColor(Color.WHITE);
button3.setBackgroundColor(Color.WHITE);
button4.setBackgroundColor(Color.WHITE);
// the textview in which score will be displayed
scored = (TextView)getActivity().findViewById(R.id.score);
scored.setText(getResources().getString(R.string.current_score, score));
// the timer
times = (TextView)getActivity().findViewById(R.id.timers);
// method which will set the things up for our game
allAnswers.clear();
setQuestionView();
times.setText(getResources().getString(R.string.start_time));
// Start timer
timer.start();
// button click listeners
// passing the button text to other method
// to check whether the answer is correct or not
// same for all three buttons
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getAnswer(button1);
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getAnswer(button2);
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getAnswer(button3);
}
});
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getAnswer(button4);
}
});
}
Hier ist meine getAnswer() (verkürzt etwas)
public void getAnswer(TextView AnswerString) {
String option = AnswerString.getText().toString();
//If timer is running stop and restart
if(timer != null) {
timer.cancel(); // Stop Timer
timer.start(); // Start timer
}
if (currentQ.getANSWER().equals(option)) {
// if conditions matches increase the int (score) by 1
// and set the text of the score view
score++;
scored.setText(getResources().getString(R.string.current_score, score));
AnswerString.setBackgroundColor(Color.GREEN);
} else {
//If answer is wrong change button colors
AnswerString.setBackgroundColor(Color.RED);
//WrongAnswer.setBackgroundColor(Color.GREEN);
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Load ResultFragment()...
}
}, 1000);
return;
}
if (qid < 25) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
// if questions are not over then do this
currentQ = quesList.get(qid);
allAnswers.clear();
//set all buttons white for next question
button1.setBackgroundColor(Color.WHITE);
button2.setBackgroundColor(Color.WHITE);
button3.setBackgroundColor(Color.WHITE);
button4.setBackgroundColor(Color.WHITE);
setQuestionView();
}
}, 1000);
} else {
// if "game over" (qid>25) do this
//Load ResultFragment()...
}
und schließlich meine questionView()
private void setQuestionView() {
allAnswers.add(currentQ.getOPTA());
allAnswers.add(currentQ.getOPTB());
allAnswers.add(currentQ.getOPTC());
allAnswers.add(currentQ.getOPTD());
Collections.shuffle(allAnswers);
txtQuestion.setText(currentQ.getQUESTION());
button1.setText(allAnswers.get(0));
button2.setText(allAnswers.get(1));
button3.setText(allAnswers.get(2));
button4.setText(allAnswers.get(3));
qid++;
}
Danke, dass Sie mir geholfen haben!
wie kann man 'getAnswer (Button)', wenn es nur nennen ist 'TextView' in' getAnswer akzeptieren (TextView) ' – rupinderjeet
Weil in' getAnswer (TextView AnswerString) 'ich' String Option = AnswerString.getText() verwende.toString(); 'Um es in eine Zeichenfolge zu ändern, kann ich' option' verwenden, um 'currentQ.getANSWER() zu vergleichen. equals (Option)' – Xenocide122