Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在变量中存储倒计时计时器值?_Java_Android - Fatal编程技术网

Java 如何在变量中存储倒计时计时器值?

Java 如何在变量中存储倒计时计时器值?,java,android,Java,Android,所以,我的活动中有一个倒计时计时器。现在,我有一个按钮打开另一个活动。单击该按钮时,我需要存储当前的倒计时计时器值,并从保存的值在第二个活动中启动倒计时计时器。我想用意图来消磨时间,但我不知道该消磨多少时间。我该怎么做?我的计时器: public String formatTime(long millis) { String output = "00:00"; long seconds = millis / 1000; long min

所以,我的活动中有一个倒计时计时器。现在,我有一个按钮打开另一个活动。单击该按钮时,我需要存储当前的倒计时计时器值,并从保存的值在第二个活动中启动倒计时计时器。我想用意图来消磨时间,但我不知道该消磨多少时间。我该怎么做?我的计时器:

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;
    }

您要查找的信息似乎不是从倒计时中获得的。如果你不需要非常精确地计算时间,那么你可以从vreme中拉出绳子


假设您希望更精确一些,我建议在计时器启动时保存一个时间戳,然后在需要知道经过了多少时间时获取该时间戳与当前时间之间的差值。查看或根据您的需要进行选择。

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

currentTime = millisUntilFinished;
之前我在我的活动范围中声明:

long currentTime;
之后,在我的按钮上,我做了以下操作:

Intent i = new Intent(Game1.this, Game2.class);
                i.putExtra("timeCode", currentTime);
                startActivity(i);
之后,在我的Game2类的onCreate方法(也声明为长变量)中:

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


它就像一个符咒

为什么不能在
Intent
中将millisuntiltfinished作为额外值传递?可能只是
Intent.putExtra(String,String)
?在
onReceive()
do
intent.getStringExtra(String)
什么字符串?MillisonTilFinished不是很长吗?@Simon那么,当我通过MillisonTilFinished时,我的活动端会有什么价值?假设还剩550秒…我能得到550秒吗?我不完全理解它是怎么工作的。不,它是毫秒,所以你会得到550000毫秒。不,几秒钟不算。我有一个20分钟的窗口,用户需要在其中完成游戏。所以,我不认为几秒钟会那么糟糕。然后您可以使用vreme.getText().toString()来拉出计时器字符串。不过,您需要进行一些分析才能从中获得时间。或者,您可以向onTick方法中添加一些内容,以存储最新的millisuntiltfinished,然后您可以将其传递给intent。好的,我这样做了,但是如何从字符串(我得到类似19:42的值)解析为long?
Intent i = new Intent(Game1.this, Game2.class);
                i.putExtra("timeCode", currentTime);
                startActivity(i);
Bundle extras = getIntent().getExtras(); 
        if(extras !=null) {
           currentTime = extras.getLong("timeCode");
        }
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);
     }