Android为2个或更多活动传递倒数计时器

时间:2013-02-05 08:33:31

标签: android countdowntimer

我正在尝试将countdownTimer值从活动1传递到活动2,并从活动1中获取的值启动活动2中的倒计时Timer,但我不知道如何启动将活动2中的计时器指向变量,这是我的活动1的代码

    new CountDownTimer(20000, 1000) {
        public void onTick(long millisUntilFinished) {
            tv.setText("seconds remaining: " + millisUntilFinished / 1000);

        }
        public void onFinish() {
            tv.setText("done!");
        }
     }.start();

    next.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent i = new Intent(MainActivity.this, Page2.class);
            i.putExtra("timervalue", tv.getText());
            startActivity(i);
        }

    });

,这是活动2中的代码

    Bundle bundle = getIntent().getExtras();  
    long value = Long.parseLong(bundle.getString("timervalue"));
    new CountDownTimer(value, 1000) {
        public void onTick(long millisUntilFinished) {
            tv.setText("seconds remaining: " + millisUntilFinished / 1000);
        }
        public void onFinish() {
            tv.setText("done!");
        }
     }.start();  

我还尝试使用Intet而不是Bundle

来制作活动2
    Intent results = this.getIntent();
    String s = results.getExtras().getString("timervalue");
    long value = Long.parseLong(s);

    new CountDownTimer(value, 1000) {
        public void onTick(long millisUntilFinished) {
            tv.setText("seconds remaining: " + millisUntilFinished / 1000);
        }
        public void onFinish() {
            tv.setText("done!");
        }
     }.start();  

我认为当我putExtra和getExtra时我遇到的错误但是我不确定,我是java的初学者。所以请帮忙。

2 个答案:

答案 0 :(得分:0)

您的额外计时器值是一个字符串(“剩余秒数”+剩余秒数)。你不能把这个字符串强制转换为long。你可以尝试类似的东西:

String timeValueStr = tv.getText().toString().replace("seconds remaining: ", "");
long value = Long.parseLong(timeValueStr);

答案 1 :(得分:0)

问题在于,您在String中添加Activity1个额外内容,然后尝试从另一端的Long获取Bundle。将值作为String传递很好,但是您需要在Long中将其解析为Activity2。所以代码应该是这样的:

Bundle bundle = getIntent().getExtras();  
    long value = Long.parseLong(bundle.getString("timervalue"));

希望这有帮助。