2017-04-03 4 views
0

J'ai fait un jeu avec 3 niveaux, facile, normal et difficile.Comment puis-je arrêter l'affichage de la minuterie dans mes autres niveaux?

facile a 300 secondes avant que l'activité TimeUp apparaît, normale a 600 secondes, dur a 900 secondes

par exemple, je choisi facile, mais je perds donc je suis retourné à choisir quel niveau je prendrais prochain. J'ai choisi normal mais la page de minuterie pour les apparences faciles. Comment puis-je empêcher la minuterie d'apparaître dans mes autres niveaux.

je manque quelque chose

activité

pour le niveau:

public class EasyAct extends AppCompatActivity { 
    Button b1, b2, b3, b4; 
    TextView tv1, tv2, tv3, tv4; 
    int score =0; 
    TriviaQuizHelper1 triviaQuizHelper1; 
    TriviaQuestion1 currentQuestion; 
    List<TriviaQuestion1> list; 
    int qid = 0; 
    int level = 1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.act_easy); 

     tv1 = (TextView) findViewById(R.id.triviaQuestion); 
     tv2 = (TextView) findViewById(R.id.triviTimer); 
     b1 = (Button) findViewById(R.id.buttonA); 
     b2 = (Button) findViewById(R.id.buttonB); 
     b3 = (Button) findViewById(R.id.buttonC); 
     b4 = (Button) findViewById(R.id.buttonD); 
     tv3 = (TextView) findViewById(R.id.level); 
     tv4 = (TextView) findViewById(R.id.score); 
     CountDownTimer countDownTimer = new CountDownTimer(300 * 1000, 1000) { 
      @Override 
      public void onTick(long l) { 
       tv2.setText("Timer:" + l/1000 + " " + "sec"); 
      } 

      @Override 
      public void onFinish() { 
       tv2.setText("TIME OUT"); 
       Intent intent = new Intent(EasyAct.this, timeup.class); 
       startActivity(intent); 
      } 
     }; 
     countDownTimer.start(); 
     triviaQuizHelper1 = new TriviaQuizHelper1(this); 
     SQLiteDatabase sqLiteDatabase = triviaQuizHelper1.getWritableDatabase(); 
     triviaQuizHelper1.allQuestion1(); 
     list = triviaQuizHelper1.getAllQuestion(); 
     currentQuestion = list.get(qid); 
     view(); 
    } 

    public void view() { 
     tv1.setText(currentQuestion.getQuestion()); 
     b1.setText(" "+currentQuestion.getOpta()); 
     b2.setText(" "+currentQuestion.getOptb()); 
     b3.setText(" "+currentQuestion.getOptc()); 
     b4.setText(" "+currentQuestion.getOptd()); 
     tv3.setText("Level:"+level); 
     tv4.setText("Score:"+score); 
    } 


    public void ButtonA(View view) { 

     if (b1.getText().toString().equals(" "+currentQuestion.getAnswer())){ 
      score+=300; 
      if(qid<19){ 
       qid++; 
       currentQuestion = list.get(qid); 
       view(); 
      }else{ 
       Intent intent=new Intent(EasyAct.this,ResultWon.class); 
       startActivity(intent); 
       finish(); 
      } 
     } 
     else { 
      Intent intent=new Intent(EasyAct.this,ResultPlayAgain.class); 
      Bundle b=new Bundle(); 
      b.putInt("xscore",score); 
      intent.putExtras(b); 
      startActivity(intent); 
      finish(); 
     } 
    } 
    public void ButtonB(View view) { 
     if (b2.getText().toString().equals(" "+currentQuestion.getAnswer())){ 
      score+=300; 
      if(qid<19){ 
       qid++; 
       currentQuestion = list.get(qid); 
       view(); 
      }else{ 
       Intent intent=new Intent(EasyAct.this,ResultWon.class); 
       startActivity(intent); 
       finish(); 
      } 
     } 
     else { 
      Intent intent=new Intent(EasyAct.this,ResultPlayAgain.class); 
      Bundle b=new Bundle(); 
      b.putInt("xscore",score); 
      intent.putExtras(b); 
      startActivity(intent); 
      finish(); 
     } 
    } 
    public void ButtonC(View view) { 
     if (b3.getText().toString().equals(" "+currentQuestion.getAnswer())){ 
      score+=300; 
      if(qid<19){ 
       qid++; 
       currentQuestion = list.get(qid); 
       view(); 
      }else{ 
       Intent intent=new Intent(EasyAct.this,ResultWon.class); 
       startActivity(intent); 
       finish(); 
      } 
     } 
     else { 
      Intent intent=new Intent(EasyAct.this,ResultPlayAgain.class); 
      Bundle b=new Bundle(); 
      b.putInt("xscore",score); 
      intent.putExtras(b); 
      startActivity(intent); 
      finish(); 
     } 
    } 
    public void ButtonD(View view) { 
     if (b4.getText().toString().equals(" "+currentQuestion.getAnswer())){ 
      score+=300; 
      if(qid<19){ 
       qid++; 
       currentQuestion = list.get(qid); 
       view(); 
      }else{ 
       Intent intent=new Intent(EasyAct.this,ResultWon.class); 
       startActivity(intent); 
       finish(); 
      } 
     } 
     else { 
      Intent intent=new Intent(EasyAct.this,ResultPlayAgain.class); 
      Bundle b=new Bundle(); 
      b.putInt("xscore",score); 
      intent.putExtras(b); 
      startActivity(intent); 
      finish(); 
     } 
    } 
    @Override 
    public void onBackPressed() { 
     Intent a = new Intent(Intent.ACTION_MAIN); 
     a.addCategory(Intent.CATEGORY_HOME); 
     a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(a); 
     finish(); 

    } 
} 
+0

Je ne vois que 300 secondes étant passé à la minuterie, faites vos autres activitées ont des quantités différentes codé en dur? Je suppose que vous avez juste besoin de déclarer la minuterie comme une variable globale pour chaque classe, alors vous pouvez appeler la méthode timer.stop() lorsque vous perdez ou recommencez – buradd

+0

où vais-je taper le timer.stop() dans le code I posté – pauro

+0

Voir: https://stackoverflow.com/help/someone-answers – c0der

Répondre

1

Vous devez arrêter le chronomètre avant de passer des activités. Si vous ne le faites pas, la nouvelle activité sera affichée sur l'écran, mais la minuterie de l'ancienne activité peut toujours être déclenchée. Pour ce faire explicitement, vous aurez besoin d'une référence à la minuterie que vous pouvez accéder à en dehors de de votre méthode onCreate(). Une façon simple de le faire est de déclarer votre CountDownTimer comme un champ de classe. Ensuite, vous pouvez accéder à la variable n'importe où dans cette classe.

public class EasyAct extends AppCompatActivity { 
    Button b1, b2, b3, b4; 
    TextView tv1, tv2, tv3, tv4; 
    int score =0; 
    TriviaQuizHelper1 triviaQuizHelper1; 
    TriviaQuestion1 currentQuestion; 
    List<TriviaQuestion1> list; 
    // declaring CountDownTimer as a class field 
    CountDownTimer countDownTimer; 
    int qid = 0; 
    int level = 1; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.act_easy); 

     tv1 = (TextView) findViewById(R.id.triviaQuestion); 
     tv2 = (TextView) findViewById(R.id.triviTimer); 
     b1 = (Button) findViewById(R.id.buttonA); 
     b2 = (Button) findViewById(R.id.buttonB); 
     b3 = (Button) findViewById(R.id.buttonC); 
     b4 = (Button) findViewById(R.id.buttonD); 
     tv3 = (TextView) findViewById(R.id.level); 
     tv4 = (TextView) findViewById(R.id.score); 

     // initializing the CountDownTimer instance 
     countDownTimer = new CountDownTimer(300 * 1000, 1000) { 
      @Override 
      public void onTick(long l) { 
       tv2.setText("Timer:" + l/1000 + " " + "sec"); 
      } 

Ensuite, vous pouvez appeler countDownTimer.stop() avant d'appeler startActivity().

0

Vous pouvez prendre countDownTimer en tant que variable globale et l'annuler au fur et à une nouvelle activité commence comme suit:

public class EasyAct extends AppCompatActivity { 
     Button b1, b2, b3, b4; 
     TextView tv1, tv2, tv3, tv4; 
     int score =0; 
     TriviaQuizHelper1 triviaQuizHelper1; 
     TriviaQuestion1 currentQuestion; 
     List<TriviaQuestion1> list; 
     int qid = 0; 
     int level = 1; 
     private CountDownTimer countDownTimer; // declare as a global variable 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.act_easy); 

      tv1 = (TextView) findViewById(R.id.triviaQuestion); 
      tv2 = (TextView) findViewById(R.id.triviTimer); 
      b1 = (Button) findViewById(R.id.buttonA); 
      b2 = (Button) findViewById(R.id.buttonB); 
      b3 = (Button) findViewById(R.id.buttonC); 
      b4 = (Button) findViewById(R.id.buttonD); 
      tv3 = (TextView) findViewById(R.id.level); 
      tv4 = (TextView) findViewById(R.id.score); 
      // initialize the timer 
      countDownTimer = new CountDownTimer(300 * 1000, 1000) { 
       @Override 
       public void onTick(long l) { 
        tv2.setText("Timer:" + l/1000 + " " + "sec"); 
       } 

       @Override 
       public void onFinish() { 
        tv2.setText("TIME OUT"); 
        Intent intent = new Intent(EasyAct.this, timeup.class); 
        startActivity(intent); 
       } 
      }; 
      countDownTimer.start(); 
      triviaQuizHelper1 = new TriviaQuizHelper1(this); 
      SQLiteDatabase sqLiteDatabase = triviaQuizHelper1.getWritableDatabase(); 
      triviaQuizHelper1.allQuestion1(); 
      list = triviaQuizHelper1.getAllQuestion(); 
      currentQuestion = list.get(qid); 
      view(); 
     } 

     public void view() { 
      tv1.setText(currentQuestion.getQuestion()); 
      b1.setText(" "+currentQuestion.getOpta()); 
      b2.setText(" "+currentQuestion.getOptb()); 
      b3.setText(" "+currentQuestion.getOptc()); 
      b4.setText(" "+currentQuestion.getOptd()); 
      tv3.setText("Level:"+level); 
      tv4.setText("Score:"+score); 
     } 


     public void ButtonA(View view) { 

      if (b1.getText().toString().equals(" "+currentQuestion.getAnswer())){ 
       score+=300; 
       if(qid<19){ 
        qid++; 
        currentQuestion = list.get(qid); 
        view(); 
       }else{ 
        Intent intent=new Intent(EasyAct.this,ResultWon.class); 
        startActivity(intent); 
        countDownTimer.cancel(); 
        finish(); 
       } 
      } 
      else { 
       Intent intent=new Intent(EasyAct.this,ResultPlayAgain.class); 
       countDownTimer.cancel(); 
       Bundle b=new Bundle(); 
       b.putInt("xscore",score); 
       intent.putExtras(b); 
       startActivity(intent); 
       finish(); 
      } 
     } 
     public void ButtonB(View view) { 
      if (b2.getText().toString().equals(" "+currentQuestion.getAnswer())){ 
       score+=300; 
       if(qid<19){ 
        qid++; 
        currentQuestion = list.get(qid); 
        view(); 
       }else{ 
        Intent intent=new Intent(EasyAct.this,ResultWon.class); 
        countDownTimer.cancel(); 
        startActivity(intent); 
        finish(); 
       } 
      } 
      else { 
       Intent intent=new Intent(EasyAct.this,ResultPlayAgain.class); 
       countDownTimer.cancel(); 
       Bundle b=new Bundle(); 
       b.putInt("xscore",score); 
       intent.putExtras(b); 
       startActivity(intent); 
       finish(); 
      } 
     } 
     public void ButtonC(View view) { 
      if (b3.getText().toString().equals(" "+currentQuestion.getAnswer())){ 
       score+=300; 
       if(qid<19){ 
        qid++; 
        currentQuestion = list.get(qid); 
        view(); 
       }else{ 
        Intent intent=new Intent(EasyAct.this,ResultWon.class); 
        countDownTimer.cancel(); 
        startActivity(intent); 
        finish(); 
       } 
      } 
      else { 
       Intent intent=new Intent(EasyAct.this,ResultPlayAgain.class); 
       countDownTimer.cancel(); 
       Bundle b=new Bundle(); 
       b.putInt("xscore",score); 
       intent.putExtras(b); 
       startActivity(intent); 
       finish(); 
      } 
     } 
     public void ButtonD(View view) { 
      if (b4.getText().toString().equals(" "+currentQuestion.getAnswer())){ 
       score+=300; 
       if(qid<19){ 
        qid++; 
        currentQuestion = list.get(qid); 
        view(); 
       }else{ 
        Intent intent=new Intent(EasyAct.this,ResultWon.class); 
        countDownTimer.cancel(); 
        startActivity(intent); 
        finish(); 
       } 
      } 
      else { 
       Intent intent=new Intent(EasyAct.this,ResultPlayAgain.class); 
       countDownTimer.cancel(); 
       Bundle b=new Bundle(); 
       b.putInt("xscore",score); 
       intent.putExtras(b); 
       startActivity(intent); 
       finish(); 
      } 
     } 
     @Override 
     public void onBackPressed() { 
      Intent a = new Intent(Intent.ACTION_MAIN); 
      countDownTimer.cancel(); 
      a.addCategory(Intent.CATEGORY_HOME); 
      a.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(a); 
      finish(); 
     } 
    }