2017-06-01 3 views
0

私はタイマーをエミュレートする必要があるAndroidアプリを持っていますが、問題は、タイマーを開始するボタンをタップすると、即時にonFinishメソッドがトリガーされ、その結果、タイマーが終了し、電話でトースト。ボタンをonClick呼び出して作成し、クリックイベント内のビューを破壊する?ボタンonClickは、クリックしたイベント内でビューを作成して破棄しますか?

これは、ボタンによって呼び出されるメソッドです:

public void onClick(View v){ 
    numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
    @Override 
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 
     timerValue = newVal*1000; 
    } 
     }); 

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

       Log.i("robeh accadono", String.valueOf(millisUntilFinished/1000)); 

      } 

      @Override 
      public void onFinish() { 
       Toast.makeText(MainActivity.this, "Il timer è arrivato alla fine", Toast.LENGTH_SHORT).show(); 
       Log.i("Fatto!", "finito"); 

      } 
     }.start(); 
    } 

あなたのクリックイベントからコードのこの部分を削除ボタンが押されたときにtimerValue変数はすべて

+0

ブレークポイントを持つデバッガを使用して、何が起きているのか把握しましたか? – Raghunandan

+0

はい、それはtimerValueをリセットする場合と同じです –

答えて

2

に割り当てられていないようですそして

numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { 
    @Override 
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 
     timerValue = newVal*1000; 
    } 
}); 
+0

私はそれが正しい値を取るようにonClickの中にあったはずだと思って、今すぐ試してみてください –

0

こんにちはニコラはちょうどこのようにコードを変更するには、ボタンのクリックのコードスニペットの前にそれを使用する:

public void onClick(ビューv){ int timerValue = numberPicker.getValue()* 1000;

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

      Log.e("robeh accadono", String.valueOf(millisUntilFinished/1000)); 

     } 

     @Override 
     public void onFinish() { 
      Toast.makeText(Test.this, "Il timer è arrivato alla fine", Toast.LENGTH_SHORT).show(); 
      Log.e("Fatto!", "finito"); 

     } 
    }.start(); 
} 

希望する!

関連する問題