我正在尝试将CountDownTimer值从Activity
1(PrimerNivel)
}传递到Activity
2(SegundoNivel
)并启动CountDownTimer
in {来自Activity
1的值的{1}} 2。
但Activity
2中的CountDownTimer
重置为零。我找不到错误。有人能帮帮我吗?
这是代码 活动1:
Activity
活动2:
public class PrimerNivel extends InicioActivity {
private TextView cuentaRegresiva;
long startTime = 60 * 1000;
private final long interval = 1 * 1000;
MyCountDownTimer countDownTimer;
long tiempoRestante;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.juego);
cuentaRegresiva=(TextView)findViewById(R.id.cuentaRegresiva);
countDownTimer = new MyCountDownTimer(startTime, interval);
cuentaRegresiva.setText(cuentaRegresiva.getText() + String.valueOf(startTime / 1000));
}
public class MyCountDownTimer extends CountDownTimer {
public MyCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish() {
cuentaRegresiva.setText("");
}
@Override
public void onTick(long millisUntilFinished) {
tiempoRestante= millisUntilFinished;
cuentaRegresiva.setText(""+millisUntilFinished/1000);
}}
OnClickListener siguiente =new OnClickListener(){
public void onClick(View arg0) {
Intent aNivelSiguiente = new Intent(PrimerNivel.this, SegundoNivel.class);
aNivelSiguiente.putExtra("regresivaAnterior", tiempoRestante);
startActivity(aNivelSiguiente);
PrimerNivel.this.finish();
}};
}
答案 0 :(得分:0)
在获取值之前,您正在创建CountDownTimer
。只需将创建计时器的代码移动到您获得值的下方。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.juego);
cuentaRegresiva=(TextView)findViewById(R.id.cuentaRegresiva);
bundle = getIntent().getExtras();
startTime= bundle.getLong("regresivaAnterior")/1000;
// move it here after you've gotten the value
countDownTimer = new MyCountDownTimer(startTime, interval);
cuentaRegresiva.setText(""+startTime);
countDownTimer.start();
您可能需要取消第一个计时器才能在正确的时间获得正确的值。尝试拨打
countDownTimer.cancel();
countDownTimer = null;
在创建Intent
之前。此外,从startTime
获取值后,您将Intent
除以1000。我不确定你是不是想这样做。