2017-06-01 28 views
0

我有一個Android應用程序應該模擬計時器,問題是,當我點擊應該啓動計時器的按鈕時,CountDownTimer立即觸發onFinish方法,導致日誌條目說計時器已完成並顯示在電話上敬酒。 D按鈕onClick在點擊事件中調用create和destroy視圖?按鈕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(View 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(); 
} 

希望它有幫助!