所以,我的活动中有一个倒数计时器。现在,我有一个按钮,可以打开另一个活动。单击该按钮时,我需要存储当前倒数计时器值,并从该保存值开始第二个活动中的倒数计时器。我正在考虑使用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);
}
答案 0 :(得分:0)
从CountDownTimer可以看到您正在寻找的信息。如果您不需要非常精确地计算时间,那么您可以将字符串拉出vreme。
假设你想要比这更精确,我建议在计时器启动时保存一个时间戳,然后在你需要知道经过多长时间时得到它与当前时间之间的差异。根据您的需要查看uptimeMillis()或elapsedRealtime()。
答案 1 :(得分: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);
}
它就像一个魅力!