2016-10-17 5 views
0

私は自分のプログラムに2つのCountDownTimerを持っています:4秒と24秒です。短いタイマーが動作している4秒ごとに長いタイマーを一時停止したい。その後、短いタイマーが終了すると、長いタイマーがカウントダウンを開始します。ここでは、2つのタイマーのためのコードは次のとおりです。別のカウントダウンタイマーが動作しているときに、1つのカウントダウンタイマーを一時停止するにはどうすればよいですか?

final CountDownTimer loop = new CountDownTimer(4000, 1000) { 
       @Override 
       public void onTick(long millisUntilFinished) { 

       } 
       @Override 
       public void onFinish() { 
        number.setVisibility(View.GONE); 
        final TextView prompt = (TextView) findViewById(R.id.prompt); 
        prompt.setVisibility(View.VISIBLE); 
        prompt.setText(" Enter the number"); 
        final EditText input = (EditText) findViewById(R.id.enterAnswer); 
        input.setVisibility(View.VISIBLE); 
        input.setOnKeyListener(new View.OnKeyListener() { 
         @Override 
         public boolean onKey(View v, int keyCode, KeyEvent event) { 
          if (event.getAction() == KeyEvent.ACTION_DOWN) { 
           switch (keyCode) { 
            case KeyEvent.KEYCODE_ENTER: 
             Editable answer = input.getText(); 
             int finalAnswer = Integer.parseInt(String.valueOf(answer)); 
             int finalLoadG1 = Integer.parseInt(String.valueOf(number.getText())); 
             input.setVisibility(View.GONE); 
             prompt.setVisibility(View.GONE); 
             if (finalAnswer == finalLoadG1) { 
              score++; 
             } 

             number.setVisibility(View.VISIBLE); 
             int loadG1 = generateG1.nextInt(1000000)+10000; 
             number.setText(""+loadG1); 
             input.getText().clear(); 

             start(); 

             return true; 
            default: 
           } 
          } 
          return false; 
         } 
        }); 
       } 
       }.start(); 


      new CountDownTimer(24000, 1000) { 
       @Override 
       public void onTick (long millisUntilFinished) { 
       } 
       @Override 
       public void onFinish() { 
        TextView result = (TextView) findViewById(R.id.outcome); 
        result.setText("Score: "+ score); 
        TextView prompt = (TextView) findViewById(R.id.prompt); 
        prompt.setVisibility(View.GONE); 
        final EditText input = (EditText) findViewById(R.id.enterAnswer); 
        input.setVisibility(View.GONE); 
        loop.cancel(); 
        number.setVisibility(View.GONE); 
       } 
      }.start(); 

私は、短いタイマーのためにonTickでname.pauseを()入れて、長いタイマーの命名について考えました。問題は、長いタイマーが短いタイマーの後に書き込まれるため、名前が初期化される前に認識できないことです。 Javaは順番に物事を読みます。それともすべての言語ですか?

誰かが私を助けてくれたら、私は感謝します。

誰でも答えることができる質問ですが、EditText(intを意味します)で何も入力しないでEnterキーを押したときにアプリケーションがクラッシュしないようにする方法はありますか?同様に、私はアプリを強制停止せずに続行できますか?

事前に感謝します。

+0

をあなたが拡張するクラスを作る必要があり、タイマーを起動するには

カウントダウンタイマー。 ...... – Opiatefuchs

答えて

0

コードで24秒タイマーを開始/一時停止/再開する別個のメソッドを作成します。 24秒タイマーのmilliTillFinishedを保存​​して、タイマーメソッドを再開させる必要があります。 4秒タイマーのonTick()メソッドで24秒タイマーを一時停止し、onFinish()メソッドで再開できます。タイマーを一時停止するには

public void timerStart(long timeLengthMilli) { 
    timer = new CountDownTimer(timeLengthMilli, 1000) { 

     @Override 
     public void onTick(long milliTillFinish) { 
      milliLeft=milliTillFinish; 
     } 

public void timerPause() { 
    timer.cancel(); 
} 

タイマーを再開するには:代わりに `新しいCountDownTimer`の

private void timerResume() { 
    timerStart(milliLeft); 
} 
+0

ホープが助けてくれることを願っています:) –

+0

私の記事では、私は4秒タイマーで24秒タイマーを一時停止または開始できないことを明確に述べました。次回は注意深く読んでください。 – User44

関連する問題