2014-01-27 31 views
-1

嗨我想問一些關於我的代碼因爲我找不到爲什麼它增加了多於1,當我宣佈它添加1每當計時器達到0?添加大量數字?

這裏是我的代碼

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

    timerView = (TextView)findViewById(R.id.timer); 
    energyView = (TextView)findViewById(R.id.energy); 

    counter = new MyCount (10000,10); 
    counter.start(); 


} 

public String formatTime(long millis) 
{ 
    output = ""; 
    seconds = millis/1000; 
    long minutes = seconds/60; 

    seconds = seconds % 60; 
    minutes = minutes % 60; 

    String secondsD = String.valueOf(seconds); 
    String minutesD = String.valueOf(minutes); 

    if (seconds < 10) 
     secondsD = "0" + seconds; 
    if (minutes < 10) 
     minutesD = "0" + minutes; 

    output = minutesD + ":" + secondsD; 

    return output; 
} 
public class MyCount extends CountDownTimer 
{ 
    Context mContext; 

    public MyCount(long millisInFuture, long countDownInterval) 
    { 
     super(millisInFuture, countDownInterval); 
    } 


    public void onTick (long millisUntilFinished) 
    { 
     timerView.setText (formatTime(millisUntilFinished)); 

     if (seconds == 0) 
     { 

      Toast.makeText(getApplicationContext(), "Done", Toast.LENGTH_LONG).show(); 
      energy = energy + 1; 
      energyView.setText(Integer.toString(energy)); 
     } 
    } 

    public void onFinish() {} 

} 

我energyView總是顯示隨機數但大多40+每次我秒到0誰能幫助我?在此先感謝

+0

你在哪裏初始化'能量'?另外如果你想在計時器到達0時增加值,那你爲什麼不實現'onFinish()'? –

回答

0

問題是,因爲您可以輸入條件如果(秒== 0)不止一次。 假設您輸入值爲999毫秒,然後是2毫秒的onTick。對於ms/1000都會給出0(因爲這是一個長期操作)。 你應該寫這部分考慮到這一點。 正如有人在評論中提出的建議,你可以簡單地擺脫條件秒== 0,並增加你的變量內onFinish

+0

謝謝。作品像魅力^ _ ^ – John

0

你在哪裏聲明你的秒變量和它的類型?

而且,即使你只有10000毫秒(10秒)初始化,我注意到,您在在formatTimer如下:依次

seconds = seconds % 60; 

seconds = millis/1000; 

,所以你會如果初始化時間超過60秒,則每60秒得到0!