When I pass the score back to the main Activity, the score is displayed in the for the incorrect test
Activity
QuestionsColors
Activity
PHP:
package com.exmaple.quiz;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class QuizActivity extends Activity {
private static final int REQUEST_HIRAGANSCORE = 0;
private static final int REQUEST_NUMBERSCORE = 1;
private static final int REQUEST_COLORSCORE = 2;
Button mStartHiraganaButton;
Button mStartKatakanaButton;
Button mStartNumberButton;
Button mStartColorsButton;
TextView mHiraganaScoreText;
TextView mNumbersScoreText;
TextView mColorsScoreText;
double mHiraganaPercentageScore;
boolean mTakenHiraganaQuiz = false;
double mNumbersPercentageScore;
boolean mTakenNumbersQuiz = false;
double mColorsPercentageScore;
boolean mTakenColorsQuiz = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
mStartHiraganaButton = (Button)findViewById(R.id.start_hiragana_button);
mStartHiraganaButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(QuizActivity.this, QuestionsHiragana.class);
startActivityForResult(i, 0);
}
});
mStartNumberButton = (Button)findViewById(R.id.start_numbers_button);
mStartNumberButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(QuizActivity.this, QuestionsNumbers.class);
startActivityForResult(i, 0);
}
});
mStartColorsButton = (Button)findViewById(R.id.start_colors_button);
mStartColorsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(QuizActivity.this, QuestionsColors.class);
startActivityForResult(i, 0);
}
});
mHiraganaScoreText = (TextView)findViewById(R.id.hiragana_score);
if (mTakenHiraganaQuiz)
{
mHiraganaPercentageScore = (int)mHiraganaPercentageScore*100;
mHiraganaScoreText.setText(R.string.finished_quiz + String.valueOf(mHiraganaPercentageScore));
}
mNumbersScoreText = (TextView)findViewById(R.id.numbers_score);
if (mTakenNumbersQuiz)
{
mNumbersPercentageScore = (int)mNumbersPercentageScore*100;
mNumbersScoreText.setText(R.string.finished_quiz + String.valueOf(mNumbersPercentageScore));
}
mColorsScoreText = (TextView)findViewById(R.id.colors_score);
if (mTakenColorsQuiz)
{
mColorsPercentageScore = (int)mColorsPercentageScore*100;
mColorsScoreText.setText(R.string.finished_quiz + String.valueOf(mColorsPercentageScore));
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK) return;
if (requestCode==REQUEST_HIRAGANSCORE)
{
mHiraganaPercentageScore = data.getDoubleExtra(QuestionsHiragana.EXTRA_SCORE, 0.0);
mTakenHiraganaQuiz = data.getBooleanExtra(QuestionsHiragana.EXTRA_TAKEN_QUIZ, false);
}
else if (requestCode==REQUEST_NUMBERSCORE)
{
mNumbersPercentageScore = data.getDoubleExtra(QuestionsNumbers.EXTRA_SCORE, 0.0);
mTakenNumbersQuiz = data.getBooleanExtra(QuestionsNumbers.EXTRA_TAKEN_QUIZ, false);
}
else if (requestCode==REQUEST_COLORSCORE)
{
mColorsPercentageScore = data.getDoubleExtra(QuestionsColors.EXTRA_SCORE, 0.0);
mTakenColorsQuiz = data.getBooleanExtra(QuestionsColors.EXTRA_TAKEN_QUIZ, false);
}
}
@Override
public void onResume() {
super.onResume();
mColorsScoreText = (TextView)findViewById(R.id.colors_score);
if (mTakenHiraganaQuiz)
{
mHiraganaPercentageScore = (int)mHiraganaPercentageScore*100;
mHiraganaScoreText.setText(R.string.finished_quiz + String.valueOf(mHiraganaPercentageScore));
}
else if (mTakenNumbersQuiz)
{
mNumbersPercentageScore = (int)mNumbersPercentageScore*100;
mNumbersScoreText.setText(R.string.finished_quiz + String.valueOf(mNumbersPercentageScore));
}
else if (mTakenColorsQuiz)
{
mColorsPercentageScore = (int)mColorsPercentageScore*100;
mColorsScoreText.setText(R.string.finished_quiz + String.valueOf(mColorsPercentageScore));
}
}
}
QuestionsColors
PHP:
package com.example.quiz;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
import android.graphics.Color;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class QuestionsColors extends Activity {
public static final String EXTRA_SCORE = "score";
public static final String EXTRA_TAKEN_QUIZ = "taken_quiz";
private static final int REQUEST_COLORSCORE = 2;
Button mAButton;
Button mBButton;
Button mCButton;
Button mDButton;
TextView mQuestionTextView;
TextView mQuestionNumberTextView;
TextView mResultTextView;
int mScore = 0;
// implement with an ArrayList so it can be shuffled easily
Question[] mQuestions = new Question[] {
new Question (R.string.question_red,R.string.answer_red),
new Question (R.string.question_yellow,R.string.answer_yellow),
new Question (R.string.question_blue,R.string.answer_blue),
new Question (R.string.question_orange,R.string.answer_orange),
new Question (R.string.question_pink,R.string.answer_pink),
new Question (R.string.question_purple,R.string.answer_purple),
new Question (R.string.question_green,R.string.answer_green),
new Question (R.string.question_black,R.string.answer_black),
new Question (R.string.question_white,R.string.answer_white),
new Question (R.string.question_brown,R.string.answer_brown),
new Question (R.string.question_grey,R.string.answer_grey)
};
int mCurrentIndex = 0;
private void updateQuestion() {
int question = mQuestions[mCurrentIndex].getQuestion();
mQuestionTextView.setText(question);
String colorString = getResources().getString(question);
// switch case
SetColor(colorString);
int mQNumber = mCurrentIndex+1;
mQuestionNumberTextView.setText("Question number " + mQNumber);
Random r = new Random();
int randonNumber;
ArrayList<String> ans = new ArrayList<String>();
for (int i = 0; i < 3; i++)
{
boolean mUnique = true;
do
{
randonNumber = r.nextInt(mQuestions.length);
String mChoice = getResources().getString(mQuestions[randonNumber].getAnswer());
String mCorrect = getResources().getString(mQuestions[mCurrentIndex].getAnswer());
for(String a : ans)
{
if (mChoice == a || mChoice == mCorrect)
{
mUnique=false;
break;
}
else
{
mUnique=true;
break;
}
}
}
while (!mUnique);
ans.add(getResources().getString(mQuestions[randonNumber].getAnswer()));
}
ans.add(getResources().getString(mQuestions[mCurrentIndex].getAnswer()));
// sort randomly
Collections.shuffle(ans);
// three random numbers
mAButton.setText(ans.get(0));
mBButton.setText(ans.get(1));
mCButton.setText(ans.get(2));
mDButton.setText(ans.get(3));
//mResultTextView.setText("");
}
private boolean checkAnswer(String userChoice) {
int messageResId = 0;
String mAnswer = getResources().getString(mQuestions[mCurrentIndex].getAnswer());
if (userChoice == mAnswer)
{
messageResId = R.string.correct_toast;
mScore++;
mResultTextView.setText("Correct");
//getWindow().getDecorView().findViewById(R.layout.activity_questions).invalidate();
//android.os.SystemClock.sleep(1000);
Toast.makeText(this, messageResId, Toast.LENGTH_SHORT).show();
return true;
}
else
{
mResultTextView.setText("Incorrect");
messageResId = R.string.incorrect_toast;
Toast.makeText(this, messageResId, Toast.LENGTH_SHORT).show();
return false;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_questions);
mQuestionTextView = (TextView)findViewById(R.id.question_text_view);
mQuestionNumberTextView = (TextView)findViewById(R.id.question_number_text_view);
mResultTextView = (TextView)findViewById(R.id.result_text_view);
mAButton = (Button)findViewById(R.id.button_A);
mAButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String answer = mAButton.getText().toString();
boolean mIsCorrect = checkAnswer(answer);
mCurrentIndex++;
if (mCurrentIndex <= (mQuestions.length-1))
{
updateQuestion();
}
else
{
// end of Quiz
FinishQuestions();
}
}
});
mBButton = (Button)findViewById(R.id.button_B);
mBButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String answer = mBButton.getText().toString();
boolean mIsCorrect = checkAnswer(answer);
mCurrentIndex++;
if (mCurrentIndex <= (mQuestions.length-1))
{
updateQuestion();
}
else
{
// end of Quiz
FinishQuestions();
}
}
});
mCButton = (Button)findViewById(R.id.button_C);
mCButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String answer = mCButton.getText().toString();
boolean mIsCorrect = checkAnswer(answer);
mCurrentIndex++;
if (mCurrentIndex <= (mQuestions.length-1))
{
updateQuestion();
}
else
{
// end of Quiz
FinishQuestions();
}
}
});
mDButton = (Button)findViewById(R.id.button_D);
mDButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String answer = mDButton.getText().toString();
boolean mIsCorrect = checkAnswer(answer);
mCurrentIndex++;
if (mCurrentIndex <= (mQuestions.length-1))
{
updateQuestion();
}
else
{
// end of Quiz
FinishQuestions();
}
}
});
updateQuestion();
}
private void FinishQuestions()
{
final Context context = this;
Intent data = new Intent(context, QuizActivity.class);
double mPercentageScore = mScore/mQuestions.length;
data.putExtra(EXTRA_SCORE, mPercentageScore);
data.putExtra(EXTRA_TAKEN_QUIZ, true);
setResult(RESULT_OK, data);
startActivityForResult(data,REQUEST_COLORSCORE);
finish();
}
private void SetColor(String color)
{
switch (color)
{
case "purple":
mQuestionTextView.setTextColor(getResources().getColor(R.color.purple));
break;
case "green":
mQuestionTextView.setTextColor(getResources().getColor(R.color.green));
break;
case "pink":
mQuestionTextView.setTextColor(getResources().getColor(R.color.pink));
break;
case "brown":
mQuestionTextView.setTextColor(getResources().getColor(R.color.brown));
break;
case "black":
mQuestionTextView.setTextColor(getResources().getColor(R.color.black));
break;
case "white":
mQuestionTextView.setTextColor(getResources().getColor(R.color.white));
break;
case "orange":
mQuestionTextView.setTextColor(getResources().getColor(R.color.orange));
break;
case "blue":
mQuestionTextView.setTextColor(getResources().getColor(R.color.blue));
break;
case "yellow":
mQuestionTextView.setTextColor(getResources().getColor(R.color.yellow));
break;
case "grey":
mQuestionTextView.setTextColor(getResources().getColor(R.color.grey));
break;
case "red":
mQuestionTextView.setTextColor(getResources().getColor(R.color.red));
break;
}
}
@Override
public void onResume()
{
super.onResume();
}
@Override
public void onPause()
{
super.onPause();
}
}