2

我想在每分钟完成后显示一条祝酒消息。我正在使用倒数计时器并在文本视图中显示计时器。请帮我解决这个问题。以下是我的代码。

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.track_me_mode);
    counter = new MyCount (length,10);
    counter.start();
    }
    });
         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));


          }

        public void onFinish() {


              }

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

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

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

    System.out.println(minutesD);

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

    if (hours < 10)
        hoursD = "0" + hours;

    output = hoursD+" : "+minutesD + " : " + secondsD;
    return output;
  }
}
4

1 回答 1

8

Ok, You need to change your code little bit,

  1. You need to change your Seconds variable to class level
  2. You need to change your interval as follows,

    from counter = new MyCount (3600000,10); to counter = new MyCount (3600000,1000); because second argument is millisecond. I have done all the changes in below code,

    public class MainActivity extends Activity
    {
    TextView timerView;
    Button end,SOS;
    String output;
    MyCount counter;
    int length;
    
    // Change by Lucifer
    long seconds;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        timerView=(TextView)findViewById(R.id.tv_timer_track_me);
    
          //        counter = new MyCount (3600000,10);
            counter = new MyCount (3600000,1000);
            counter.start();
    }
    
    public String formatTime(long millis) 
    {
        output = "";
        seconds = millis / 1000;
        long minutes = seconds / 60;
        long hours=minutes/ 60;
    
        seconds = seconds % 60;
        minutes = minutes % 60;
        hours=hours%60;
    
        String secondsD = String.valueOf(seconds);
        String minutesD = String.valueOf(minutes);
        String hoursD=String.valueOf(hours);
    
        if (seconds < 10)
            secondsD = "0" + seconds;
        if (minutes < 10)
            minutesD = "0" + minutes;
    
        if (hours < 10)
            hoursD = "0" + hours;
    
        output = hoursD+" : "+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();
            }
        }
    
        public void onFinish() {}
    
    }
    
    @Override
    public void onDestroy()
    {
        super.onDestroy();
        counter.cancel();
    }
    }
    
于 2013-05-16T11:25:56.727 回答