0

所以,我的活动中有一个倒数计时器。现在,我有一个按钮可以打开另一个活动。单击该按钮时,我需要存储当前的倒计时计时器值,并从该保存的值开始在第二个活动中启动倒计时计时器。我正在考虑使用 Intent 来打发时间,但我不知道要传递什么价值。我怎样才能做到这一点?我的计时器:

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

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

        String sec = String.valueOf(seconds);  
        String min = String.valueOf(minutes);  

        if (seconds < 10)  
            sec = "0" + seconds;  
        if (minutes < 10)  
            min= "0" + minutes;  

        output = min + " : " + sec;  
        return output;
    }

在 onCreate 方法中:

// New timer for 40 minutes, starts after initialization
        new MyCount(2400000, 1000) 
        {
            // Updates the text on your "scoreboard" every second
            public void onTick(long millisUntilFinished) 
            {
                vreme.setText("" + formatTime(millisUntilFinished));
            }

            public void onFinish() 
            {

            }
        }.start();
    }

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

         public void onFinish() {


         }
         public void onTick(long millisUntilFinished) {
             vreme.setText("" + millisUntilFinished / 1000);
         }
4

2 回答 2

0

您正在寻找的信息似乎无法从 CountDownTimer 获得。如果您不需要非常精确的时间,那么您可以将字符串从 vreme 中拉出。

假设您想要比这更精确,我建议您在计时器启动时保存一个时间戳,然后在您需要知道已经过去了多少时间时获取该时间戳与当前时间之间的差异。根据您的需要查看uptimeMillis()elapsedRealtime() 。

于 2013-04-24T23:05:01.343 回答
0

好的,我自己回答。这就是我所做的。在我的第一个活动中,我完成了原始帖子中的所有内容,并且我在 MyCount 方法中添加了这个,就在 vreme.setText .... 下方:

currentTime = millisUntilFinished;

之前我在我的活动范围内声明:

long currentTime;

之后,在我的 onClickListener 按钮上,我这样做了:

Intent i = new Intent(Game1.this, Game2.class);
                i.putExtra("timeCode", currentTime);
                startActivity(i);

之后在我的 Game2 类的 onCreate 方法中(也声明了 long 变量):

Bundle extras = getIntent().getExtras(); 
        if(extras !=null) {
           currentTime = extras.getLong("timeCode");
        }

然后这个(它与 Game1 类中的代码基本相同,只有一个变化,我传递的变量而不是 240000 值):

new MyCount(currentTime, 1000) 
    {
        // Updates the text on your "scoreboard" every second
        public void onTick(long millisUntilFinished) 
        {
            vreme.setText("" + formatTime(millisUntilFinished));
        }

        public void onFinish() 
        {

        }
    }.start();
}




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

     public void onFinish() {


     }
     public void onTick(long millisUntilFinished) {
         vreme.setText("" + millisUntilFinished / 1000);
     }

它就像一个魅力!

于 2013-04-25T00:53:29.173 回答