我已经提出了包含5个问题的测验应用程序。我做了一个显示测验结果的ResultActivity页面。在应用程序中添加倒数计时器
现在我想为每个问题添加20秒的countDown计时器。当倒数计时器结束时,它自动转到下一个问题。当问题完成后,它应该移到ResultActivity页面来显示结果。
我不知道如何在其中添加倒数计时器。
这是我的代码:
QuizActivity.java
package com.example.triviality;
import java.util.LinkedHashMap;
import java.util.List;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;
public class QuizActivity extends Activity {
List<Question> quesList;
public static int score,correct,wrong,wronganswers;
public boolean isCorrect;
static int qid=0;
int totalCount=5;
Question currentQ;
TextView txtQuestion;
RadioGroup radioGroup1;
RadioButton rda, rdb, rdc;
Button butNext;
TextView rt;
boolean nextFlag =false;
boolean isTimerFinished = false;
static LinkedHashMap lhm = new LinkedHashMap();
MyCountDownTimer countDownTimer = new MyCountDownTimer(10000 /*20 Sec*/, 1000);
//final MyCountDownTimer timer = new MyCountDownTimer(20000,1000);
public static String[] Correctanswers = new String[5];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quiz);
DbHelper db=new DbHelper(this);
quesList=db.getAllQuestions();
currentQ=quesList.get(qid);
txtQuestion=(TextView)findViewById(R.id.textView1);
rda=(RadioButton)findViewById(R.id.radio0);
rdb=(RadioButton)findViewById(R.id.radio1);
rdc=(RadioButton)findViewById(R.id.radio2);
butNext=(Button)findViewById(R.id.button1);
//radioGroup1=(RadioGroup)findViewById(R.id.radioGroup1);
setQuestionView();
// timer.start();
rt = (TextView)findViewById(R.id.rt);
rt.setText("20");
countDownTimer.start();
butNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
countDownTimer.cancel();
if(getNextQuestion(false)){
//Start The timer again
countDownTimer.start();
}}
});
}
private void setQuestionView()
{
txtQuestion.setText(currentQ.getQUESTION());
rda.setText(currentQ.getOPTA());
rdb.setText(currentQ.getOPTB());
rdc.setText(currentQ.getOPTC());
}
public class MyCountDownTimer extends CountDownTimer {
public MyCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
public void onFinish() {
Log.e("Times up","Times up");
countDownTimer.cancel();
if (getNextQuestion(false)) {
//Start The timer again
countDownTimer.start();
}
}
@Override
public void onTick(long millisUntilFinished) {
rt.setText((millisUntilFinished/1000)+"");
Log.e("Second Gone","Another Second Gone");
Log.e("Time Remaining","seconds remaining: " + millisUntilFinished/1000);
}
}
boolean getNextQuestion(boolean c){
nextFlag = true;
RadioGroup grp=(RadioGroup)findViewById(R.id.radioGroup1);
//grp.clearCheck();
RadioButton answer=(RadioButton)findViewById(grp.getCheckedRadioButtonId());
if(rda.isChecked()||rdb.isChecked()||rdc.isChecked()){
qid++;
Log.d("yourans", currentQ.getANSWER()+" "+answer.getText());
grp.clearCheck();
//wronganswers=
if(!c && currentQ.getANSWER().equals(answer.getText())){
correct++;
}else{
lhm.put(currentQ.getQUESTION(),currentQ.getANSWER());
wrong++;
}
if(qid<5){
currentQ=quesList.get(qid);
setQuestionView();
}else{
score=correct;
Intent intent = new Intent(QuizActivity.this, ResultActivity.class);
Bundle b = new Bundle();
b.putInt("score", score); //Your score
intent.putExtras(b); //Put your score to your next Intent
startActivity(intent);
return false;
}
}else{
Toast.makeText(getApplicationContext(),
"Please select atleast one Option",Toast.LENGTH_SHORT).show();
}
return true;
}
}
//显示结果: ResultActivity.java
package com.example.triviality;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class ResultActivity extends Activity {
Button restart;
Button check;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
TextView t=(TextView)findViewById(R.id.textResult);
TextView t1=(TextView)findViewById(R.id.textResult1);
TextView t2=(TextView)findViewById(R.id.textResult2);
restart=(Button)findViewById(R.id.restart);
check=(Button)findViewById(R.id.check);
StringBuffer sb=new StringBuffer();
sb.append("Correct ans: "+QuizActivity.correct+"\n");
StringBuffer sc=new StringBuffer();
sc.append("Wrong ans : "+QuizActivity.wrong+"\n");
StringBuffer sd=new StringBuffer();
sd.append("Final Score : "+QuizActivity.score);
t.setText(sb);
t1.setText(sc);
t2.setText(sd);
QuizActivity.correct=0;
QuizActivity.wrong=0;
check.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent in=new Intent(getApplicationContext(),CheckActivity.class);
startActivity(in);
}
});
restart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent(getApplicationContext(),QuizActivity.class);
startActivity(intent);
QuizActivity.lhm.clear();
QuizActivity.qid=0;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_result, menu);
return true;
}
}
你尝试过什么?如果您需要为您免费提供的一些代码,则无法在此处使用。 – 2014-09-30 05:30:20
[Android中的倒数计时器](http://www.androidhub4you.com/2014/01/countdown-example-in-android-custom.html) – 2014-09-30 05:30:30