在Android中的活动之间传递倒数计时器

时间:2014-11-25 15:02:55

标签: android android-activity countdown countdowntimer

我正在尝试将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();




                                                      }};

           }

1 个答案:

答案 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。我不确定你是不是想这样做。