• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps Having problem returning data from activity

chiba79

Lurker
When I pass the score back to the main Activity, the score is displayed in the for the incorrect test

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();
    	
    }
}
 
Back
Top Bottom