2017-03-10 8 views
-5

現在、私のアプリでは、ボタンをクリックするたびに複数のカウントダウンタイマーを作成しています。すべてのカウントダウンタイマーをキャンセルボタンにペアリングして、ユーザーがカウントダウンタイマーをキャンセルできるようにします。現在私はcdt.cancel()を使用してカウントダウンタイマーをキャンセルする関数を持っています。ここで、cdtはcountdowntimer変数です。しかし、それは以前に作成されたcdtを取り消すことしかできません。それ以前にカウントダウンタイマーをキャンセルする方法はありますか?複数のCoundownTimerをアンドロイドで制御する方法

+2

あなたのコード – Stefan

+0

ストアの他の変数のタイマ、あるいはリストを追加してください。 –

答えて

0

私はこのようなものだろう:あなたは、あなたのList<CountDownTimer> listOfTimersあなたのボタンのonClick方法からstartNewTimer(list)を呼ぶだろう

List<CountDownTimer> listOfTimers = new ArrayList<>())グローバル変数としてを作成することもできます

private void startNewTimer(List<CountDownTimer> listOfTimers) { 


     CountDownTimer countDownTimer = new CountDownTimer(1000,1000) { 
      @Override 
      public void onTick(long millisUntilFinished) { 

      } 

      @Override 
      public void onFinish() { 

      } 
     }.start(); 

     listOfTimers.add(countDownTimer); 

    } 

    private boolean cancelTimers(List<CountDownTimer> listOfTimers) { 

     if(listOfTimers != null && !listOfTimers.isEmpty()) { 
      for(CountDownTimer cdt : listOfTimers) { 
       cdt.cancel(); 
      } 
      listOfTimers = null; 
      return true; 
     } 
     return false; 
    } 

OnClickListenerフィットすると思われるstopTimersがあります。

あなたが特定のをキャンセルしたい場合は、Listでそのインデックスを通してそれを参照することができ、キャンセルはこれを好き:

private boolean stopTimer(List<CountDownTimer> listOfTimers, int index) { 

     if(listOfTimers != null && listOfTimers.size() > index) { 
      for(int i = 0; i < listOfTimers.size(); i++) { 
       listOfTimers.get(i).cancel(); 
      } 
      return true; 
     } 
     return false; 
    } 
関連する問題