0

我正在尝试将活动 1 中的 countdownTimer 值传递给活动 2,并从活动 1 中获得的值启动活动 2 中的倒数计时器,但我不知道如何为活动 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 的初学者。所以请帮忙。

4

2 回答 2

0

您的额外计时器值是一个字符串(“剩余秒数:” + 剩余秒数)。您不能将此字符串转换为长字符串。您可以尝试以下方法:

String timeValueStr = tv.getText().toString().replace("seconds remaining: ", "");
long value = Long.parseLong(timeValueStr);
于 2013-02-05T08:44:58.173 回答
0

这里的问题是您将 a Stringin extras 放入Activity1,然后尝试LongBundle另一端获取 a 。将值作为 a 传递String很好,但是您需要将其解析为Longin Activity2。所以代码应该是这样的:

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

希望这可以帮助。

于 2013-02-05T08:46:21.537 回答