temporizador studio segundos reloj regresiva parte para mail cuenta cronometro contador básico android android-intent timer scoring

android - studio - motion mail



¿Cómo llamar a otra intención desde el método de finalización del temporizador de cuenta regresiva? (1)

Estoy trabajando en una prueba de Android. En mi código tengo un temporizador de cuenta regresiva cuando el tiempo termina, quiero que venga la siguiente pregunta y la puntuación disminuya (para el método de disminución de puntaje del método currentGame.decrementScore ()). Si agrego un código de seguimiento en el método finish () del temporizador. Funciona correctamente pero mi botón de salida no funciona correctamente. Cuando hago clic en ese cuadro de diálogo aparece al presionar Sí, permanece en la página actual. Después de presionar 3-4 veces su salida de la actividad actual y continúa en la página del menú. Luego, desde el menú de la página, el juego comienza sin presionar el botón de reproducción automáticamente.

code for my class:- public class QuestionActivity extends Activity implements OnClickListener{ private Question currentQ; private GamePlay currentGame; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.question); /** * Configure current game and get question */ currentGame = ((CYKApplication)getApplication()).getCurrentGame(); currentQ = currentGame.getNextQuestion(); Button nextBtn1 = (Button) findViewById(R.id.answer1); nextBtn1.setOnClickListener(this); Button nextBtn2 = (Button) findViewById(R.id.answer2); nextBtn2.setOnClickListener(this); Button nextBtn3 = (Button) findViewById(R.id.answer3); nextBtn3.setOnClickListener(this); Button nextBtn4 = (Button) findViewById(R.id.answer4); nextBtn4.setOnClickListener(this); Button nextBtn5 = (Button) findViewById(R.id.answer5); nextBtn5.setOnClickListener(this); /** * Update the question and answer options.. */ setQuestions(); } /** * Method to set the text for the question and answers from the current games * current question */ private void setQuestions() { //set the question text from current question String question = Utility.capitalise(currentQ.getQuestion()); TextView qText = (TextView) findViewById(R.id.question); qText.setText(question); //set the available options List<String> answers = currentQ.getQuestionOptions(); TextView option1 = (TextView) findViewById(R.id.answer1); option1.setText(Utility.capitalise(answers.get(0))); TextView option2 = (TextView) findViewById(R.id.answer2); option2.setText(Utility.capitalise(answers.get(1))); TextView option3 = (TextView) findViewById(R.id.answer3); option3.setText(Utility.capitalise(answers.get(2))); TextView option4 = (TextView) findViewById(R.id.answer4); option4.setText(Utility.capitalise(answers.get(3))); int score = currentGame.getScore(); String scr = String.valueOf(score); TextView score1 = (TextView) findViewById(R.id.score); score1.setText(scr); new CountDownTimer(10000, 1000) { public void onTick(long millisUntilFinished) { TextView timers = (TextView) findViewById(R.id.timers); timers.setText("Time: " + millisUntilFinished / 1000); } public void onFinish() { } }.start(); } @Override public void onClick(View arg0) { //Log.d("Questions", "Moving to next question"); if(arg0.getId()==R.id.answer5) { new AlertDialog.Builder(this) .setMessage("Are you sure?") .setCancelable(true) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { finish(); } }).setNegativeButton("No", null).show(); } else { if(!checkAnswer(arg0)) return; /** * check if end of game */ if (currentGame.isGameOver()){ //Log.d("Questions", "End of game! lets add up the scores.."); //Log.d("Questions", "Questions Correct: " + currentGame.getRight()); //Log.d("Questions", "Questions Wrong: " + currentGame.getWrong()); Intent i = new Intent(this, EndgameActivity.class); startActivity(i); finish(); } else{ Intent i = new Intent(this, QuestionActivity.class); startActivity(i); finish(); } } } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_BACK : return true; } return super.onKeyDown(keyCode, event); } /** * Check if a checkbox has been selected, and if it * has then check if its correct and update gamescore */ private boolean checkAnswer(View v) { Button b=(Button) v; String answer = b.getText().toString(); //Log.d("Questions", "Valid Checkbox selection made - check if correct"); if (currentQ.getAnswer().equalsIgnoreCase(answer)) { b.setBackgroundResource(R.drawable.answercolor); //Log.d("Questions", "Correct Answer!"); currentGame.incrementScore(); } else{ b.setBackgroundResource(R.drawable.answercolorr); //Log.d("Questions", "Incorrect Answer!"); currentGame.decrementScore(); } return true; } }

Y el código que estoy agregando en el método de finalización de un temporizador: -

intent i; i.setClassName("com.pkgname","com.pkgname.classname"); startActivityForResult(i,0);


Cree un nuevo método, digamos processScreen() e inserte datos de onCreate dentro de él para que pueda llamar a este método, repetidamente con tener que llamar a la misma actividad otra vez ... (es una solución ...)

private void processScreen(){ /** * Configure current game and get question */ currentGame = ((CYKApplication)getApplication()).getCurrentGame(); currentQ = currentGame.getNextQuestion(); Button nextBtn1 = (Button) findViewById(R.id.answer1); nextBtn1.setOnClickListener(this); Button nextBtn2 = (Button) findViewById(R.id.answer2); nextBtn2.setOnClickListener(this); Button nextBtn3 = (Button) findViewById(R.id.answer3); nextBtn3.setOnClickListener(this); Button nextBtn4 = (Button) findViewById(R.id.answer4); nextBtn4.setOnClickListener(this); Button nextBtn5 = (Button) findViewById(R.id.answer5); nextBtn5.setOnClickListener(this); /** * Update the question and answer options.. */ setQuestions(); }

entonces ahora tu onCreate convierte

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.question); processScreen(); }

Ahora, llame a processScreen() lugar de llamar a QuestionActivity nuevamente en onClick de su botón. En otras palabras, los contenidos se actualizarán ..

Espero que esto ayude..