我试图将 countdownTimer 值从 Activity 1 传递到 Activity 2,并从 Activity 1 获得的值开始 Activity 2 中的倒数计时器,但我不知道如何开始指向 Activity 2 中的计时器作为变量,这是我的 Activity 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);
}
});
这是 Activity 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 的初学者所以请任何帮助...... 非常感谢
最佳答案
这是正确的代码
在 Activity 1 中
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);
Activity 2
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 的代码。因此,在下一个 Activity 中,您会自动收到一个时间已过的错误。
关于Android 为 2 个或更多 Activity 传递倒数计时器的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716468/