我正在尝试将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的初学者。所以请帮忙。
答案 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"));
希望这有帮助。