Autore Topic: Cancellare CountDownTimer  (Letto 499 volte)

Offline swet90

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Davide Antonelli
  • Sistema operativo:
    Windows 8
Cancellare CountDownTimer
« il: 10 Agosto 2013, 11:55:42 CEST »
0
Ciao ragazzi, sto implementando un CountDownTimer per una mia applicazione ma mi trovo bloccato sul metodo .cancel() del CountDownTimer, ecco il codice:

Codice (Java): [Seleziona]
         final CountDownTimer timer1= new CountDownTimer(Integer.parseInt(impSecondi.getText().toString()) * 1000, 1000){
                                       
                                        public void onTick(long millisUntilFinished) {
                                                progress.setContentView(R.layout.dialog_conta_serie);
                                                TWSecRec= (TextView) progress.findViewById(R.id.TWsecRec);
                                                ButtonStop= (Button) progress.findViewById(R.id.buttonStop);
                                                TWSecRec.setText("Mancano  " + millisUntilFinished / 1000 + " secondi di recupero");
                                                progress.setTitle("Recupera e fai Stretching!");
                                                progress.setCancelable(true);
                                               
                                                ButtonStop.setOnClickListener(new View.OnClickListener() {
                                                       
                                                        @Override
                                                        public void onClick(View v) {
                                                                if(timer1 != null) {
                                                                 timer1.cancel();
                                                                 timer1 = null;
                                                                 progress.dismiss();
                                                             } 
                                                                       
                                                                       
                                                               
                                                               
                                                        }
                                                });
                                                progress.show();
                                            }
                                        public void onFinish() {
                                                secRimanenti.setText("");
                                                progress.dismiss();
                                                mp.start();
                                                // se arg1== 1 , � stato chiamato da modalitalibera
                                                if (arg1==1){
                                                modalitalibera(1,mp,temposerie);
                                                }
                                         if (arg1==2){
                                                 //se  arg1== 2 , � stato chiamato da modalitacircuito
                                         modalitacircuito(1,mp,temposerie);
                                         }
                                     
                                         
                                        }
                                  }.start();
                               
                               
                                }

in questa parte qui:
Codice (Java): [Seleziona]
ButtonStop.setOnClickListener(new View.OnClickListener() {
                                                       
                                                        @Override
                                                        public void onClick(View v) {
                                                                if(timer1 != null) {
                                                                 timer1.cancel();
                                                                 timer1 = null;
                                                                 progress.dismiss();
                                                             } 
                                                                       
java mi segnala "The local variable timer1 may not have been initialized" , non riesco ad uscirne , sapete aiutarmi?

Grazie

Offline vincenzoc

  • Utente junior
  • **
  • Post: 148
  • Respect: +47
    • Google+
    • cerminarav
    • Mostra profilo
    • Mie applicazioni sul Play Store
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Vincenzo Cerminara
  • Sistema operativo:
    Arch Linux
Re:Cancellare CountDownTimer
« Risposta #1 il: 10 Agosto 2013, 13:09:37 CEST »
+1
Questo succede perché quando tu utilizzi timer1, esso non è ancora stato creato. Comunque, non puoi riassegnare (in questo caso timer1=null) una variabile definita come final.
Prova questo codice:
Codice (Java): [Seleziona]
CountDownTimer timer1= new CountDownTimer(Integer.parseInt(impSecondi.getText().toString()) * 1000, 1000){
                                       
                                        public void onTick(long millisUntilFinished) {
                                                progress.setContentView(R.layout.dialog_conta_serie);
                                                TWSecRec= (TextView) progress.findViewById(R.id.TWsecRec);
                                                ButtonStop= (Button) progress.findViewById(R.id.buttonStop);
                                                TWSecRec.setText("Mancano  " + millisUntilFinished / 1000 + " secondi di recupero");
                                                progress.setTitle("Recupera e fai Stretching!");
                                                progress.setCancelable(true);

                                                final CountDownTimer tmp=this;
                                               
                                                ButtonStop.setOnClickListener(new View.OnClickListener() {
                                                       
                                                        @Override
                                                        public void onClick(View v) {
                                                                try{
                                                                        tmp.cancel();
                                                                        progress.dismiss();
                                                                }
                                                                catch(Exception e){}
                                                                // ...  
                                                                //Il resto non è cambiato
Ringrazia chi ti aiuta sul forum con l'apposito pulsante :P
Scarica Yazzy

Offline swet90

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Play Store ID:
    Davide Antonelli
  • Sistema operativo:
    Windows 8
Re:Cancellare CountDownTimer
« Risposta #2 il: 10 Agosto 2013, 13:14:35 CEST »
0
Grazie !!!! Funziona perfettamente!!!Grazie