我尝试将countdownTimer值从活动1传递到活动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来使activity 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的初学者,所以请任何帮助…谢谢阿洛特
发布于 2014-08-30 10:45:54
这是正确的代码
在Activity1中
long remainingtime;在onCreate下
new CountDownTimer(20000, 1000) {
public void onTick(long millisUntilFinished) {
Counter.setText("Time left: " + millisUntilFinished / 1000);
remainingtime=millisUntilFinished;
}
public void onFinish() {
Counter.setText("done!");
}}.start();
public void onClick(View v) {
Intent i = new Intent(Activity1.this, Activity2.class);
Bundle timetransfer=new Bundle();
timetransfer.putLong("timer", remainingtime);
i.putExtras(timetransfer);Activity2
Under onCreate
Bundle timetransfer = getIntent().getExtras();
long time =timetransfer.getLong("timer");
new CountDownTimer(time, 1000) {
public void onTick(long time) {
Counter2.setText("Time Left: " time / 1000);
}
public void onFinish() {
Counter2.setText("Time is UP!");
finish(); }
}.start();您必须擦除此部分:
long_remaingtime=millisUntilFinished / 1000;把它放在
long_remaingtime=millisUntilFinished;因为在您的例子中,您已经将大约20000(millisUntilFinished)除以1000,根据所经过的时间,您得到了大约20秒,然后在下面,您再次放置了将此数字除以1000的代码。因此,在下一个活动中,您会自动收到时间已过的错误。
发布于 2013-02-06 04:45:53
目前,您正在将"seconds remaining: "+...传递给下一个活动,并尝试将其解析为Long,这意味着您将在下一个活动中获得NumberFormatException。使用额外的变量将CountDownTimer重命名时间传递到下一个活动,如下所示:
public long long_remaingtime=20L;
new CountDownTimer(20000, 1000) {
public void onTick(long millisUntilFinished) {
tv.setText("seconds remaining: " + millisUntilFinished / 1000);
long_remaingtime=millisUntilFinished / 1000; //<<<
}
public void onFinish() {
tv.setText("done!");
long_remaingtime=20L; //<< set default here
}
}.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", long_remaingtime);
startActivity(i);
}
});在下一个活动中,获取timervalue如下:
Intent results = this.getIntent();
long value = results.getExtras().getLong("timervalue");https://stackoverflow.com/questions/14716468
复制相似问题