user7596752
user7596752

Reputation:

Android Quiz App countdown

my code is given below in that for Each Question there is i.e. when count down ends its jump to next question and count down starts again, i want that when the countdown ends it should jump to the result page..and even after jumping to next question countdown should not stop.

 @Override
protected void onResume()
{
    super.onResume();

    questionPlay = db.getRuleQuestionMode(mode);
    totalQuestion = questionPlay.size();

    mCountDown = new CountDownTimer(TIMEOUT, INTERVAL) {
        @Override
        public void onTick(long millisUntilFinished) {
            progressBar.setProgress(progressValue);
            progressValue++;

        }
        @Override
        public void onFinish() {
            mCountDown.cancel();

        }
    };
    showQuestion(index);
    db.close();
}


private void showQuestion(final int index) {

    if (index < totalQuestion) {
        thisQuestion++;
        txtQuestion.setText(String.format("%d/%d", thisQuestion, totalQuestion));
        progressBar.setProgress(0);
        progressValue = 0;


        txtView1.setText(questionPlay.get(index).getQus());
        btnA.setText(questionPlay.get(index).getAnswerA());
        btnB.setText(questionPlay.get(index).getAnswerB());
        btnC.setText(questionPlay.get(index).getAnswerC());
        btnD.setText(questionPlay.get(index).getAnswerD());
        mCountDown.start();

        Button btnca =(Button) findViewById(R.id.btnca);
        btnca.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                StyleableToast st= new StyleableToast(getApplicationContext(),questionPlay.get(index).getCorrectAnswer(), Toast.LENGTH_SHORT);
                st.setBackgroundColor(Color.RED);
                st.setTextColor(Color.WHITE);
                st.setCornerRadius(3);
                st.show();
                score-=10;
            }
        });

    } else {
        Intent intent = new Intent(this, Done.class);
        Bundle dataSend = new Bundle();
        dataSend.putInt("SCORE", score);
        dataSend.putInt("TOTAL", totalQuestion);
        dataSend.putInt("CORRECT", correctAnswer);
        intent.putExtras(dataSend);
        startActivity(intent);
        finish();
    }

}

@Override
public void onClick(View v) {

    mCountDown.cancel();
    if (index < totalQuestion) {
        Button clickedButton = (Button) v;
        if (clickedButton.getText().equals(questionPlay.get(index).getCorrectAnswer())) {
            score += 10; // increase score
            correctAnswer++; //increase correct answer
            showQuestion(++index);



        } else {
            vibrator.vibrate(50);
            showQuestion(++index); // If choose right , just go to next question
        }
        txtScore.setText(String.format("%d", score));
        //clickedButton.setBackgroundColor(Color.YELLOW);;
    }
}

@Override
public void onStop() {
    if(mCountDown != null)
        mCountDown.cancel();
    super.onStop();
}

Upvotes: 0

Views: 259

Answers (1)

Richard K Maleho
Richard K Maleho

Reputation: 392

remove mCountDown.start(); in your showQuestion method.

in your onFinish method, call your results page from there

Upvotes: 1

Related Questions