Guest
Android Countdown -Timer in der Quizanwendung
Post
by Guest » 18 Feb 2025, 11:37
Ich habe eine Quizanwendung gestellt, die 5 Fragen enthält. Ich habe eine Ergebnis -Aktivitäts -Seite erstellt, auf der das Ergebnis des Quizs angezeigt wird.
Ich habe für jede Frage einen Countdown -Timer von 20 Sekunden hinzugefügt. Wenn der Countdown -Timer fertig ist, wird er automatisch zur nächsten Frage bewegt. Wenn die Fragen beendet sind, sollte sie zur Seite der Ergebnisaktivität übergehen, um das Ergebnis anzuzeigen. Wenn ich keine Antwort auswähle und der Timer beendet ist, wechselt der Applicaton nicht zu meiner Ergebnis der Ergebnisaktivität. Der Timer beginnt immer wieder auf derselben Frage, bis ich eine Option auswähle < /p>
Hier ist mein Code: < /p>
Quizaktivität.java
Code: Select all
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 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 {
lhm.put(currentQ.getQUESTION(), currentQ.getANSWER());
qid++;
if (qid < 5) {
currentQ = quesList.get(qid);
//currentQ.getANSWER().equals(wrong);
wrong++;
Log.e("yourans", currentQ.getANSWER());
setQuestionView();
}
// wrong++;
// Log.e("Without Any Selection ", "without "+wrong);
// 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) {
//QuizActivity quiz=new QuizActivity();
// TODO Auto-generated method stub
Intent intent=new Intent(getApplicationContext(),QuizActivity.class);
QuizActivity.lhm.clear();
QuizActivity.qid=0;
startActivity(intent);
//quiz.countDownTimer.onTick(19);
}
});
}
@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;
}
}
1739875022
Guest
Ich habe eine Quizanwendung gestellt, die 5 Fragen enthält. Ich habe eine Ergebnis -Aktivitäts -Seite erstellt, auf der das Ergebnis des Quizs angezeigt wird. Ich habe für jede Frage einen Countdown -Timer von 20 Sekunden hinzugefügt. Wenn der Countdown -Timer fertig ist, wird er automatisch zur nächsten Frage bewegt. Wenn die Fragen beendet sind, sollte sie zur Seite der Ergebnisaktivität übergehen, um das Ergebnis anzuzeigen. Wenn ich keine Antwort auswähle und der Timer beendet ist, wechselt der Applicaton nicht zu meiner Ergebnis der Ergebnisaktivität. Der Timer beginnt immer wieder auf derselben Frage, bis ich eine Option auswähle < /p> Hier ist mein Code: < /p> Quizaktivität.java [code]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 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 { lhm.put(currentQ.getQUESTION(), currentQ.getANSWER()); qid++; if (qid < 5) { currentQ = quesList.get(qid); //currentQ.getANSWER().equals(wrong); wrong++; Log.e("yourans", currentQ.getANSWER()); setQuestionView(); } // wrong++; // Log.e("Without Any Selection ", "without "+wrong); // 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) { //QuizActivity quiz=new QuizActivity(); // TODO Auto-generated method stub Intent intent=new Intent(getApplicationContext(),QuizActivity.class); QuizActivity.lhm.clear(); QuizActivity.qid=0; startActivity(intent); //quiz.countDownTimer.onTick(19); } }); } @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; } } [/code]