Autore Topic: Richiamare una "Public Void" (modifica di un tutorial)  (Letto 267 volte)

Offline Funesto

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: 0
    • Mostra profilo
Richiamare una "Public Void" (modifica di un tutorial)
« il: 24 Aprile 2017, 17:41:50 CEST »
0
Salve!
Ho seguito un tutorial su di un sito, modificandolo con un semplicissimo ciclo "If" e sono riuscito nell'intento solo a metà.

Si tratta di un timer, il codice è preso da Stack Overflow ( http://stackoverflow.com/questions/4597690/android-timer-how ).

Al suo interno, come dicevo, ho inserito un banale IF in modo da visualizzare un avviso dopo 10 secondi. Il mio intento è adesso di fermare il timer ma non so cosa inserire all'interno del ciclo "if". Pensavo di modificare il void in maniera tale da richiamarlo senza dover utilizzare il bottone, ma comunque non riesco a chiamarlo quando la condizione si verifica.

Questo è il codice:

Codice (Java): [Seleziona]
ge com.dostalgia.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

    TextView timerTextView;
   TextView stato;
    long startTime = 0;

    //runs without a timer by reposting this handler at the end of the runnable
    Handler timerHandler = new Handler();
    Runnable timerRunnable = new Runnable() {

        @Override
        public void run() {
            long millis = System.currentTimeMillis() - startTime;
            int seconds = (int) (millis / 1000);
            int minutes = seconds / 60;
            seconds = seconds % 60;
            stato.setText("");

            if (seconds == 5) {

                stato.setText("10 Secondi!");


            }


            timerTextView.setText(String.format("%d:%02d", minutes, seconds));

            timerHandler.postDelayed(this, 500);
        }
    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        timerTextView = (TextView) findViewById(R.id.timerTextView);
      stato = (TextView) findViewById(R.id.stato);

        Button b = (Button) findViewById(R.id.button);
        b.setText("start");
        b.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Button b = (Button) v;
                if (b.getText().equals("stop")) {
                    timerHandler.removeCallbacks(timerRunnable);
                    b.setText("start");
                } else {
                    startTime = System.currentTimeMillis();
                    timerHandler.postDelayed(timerRunnable, 0);
                    b.setText("stop");
                }
            }
        });
    }


    @Override
    public void onPause() {
        super.onPause();
        timerHandler.removeCallbacks(timerRunnable);
        Button b = (Button) findViewById(R.id.button);
        b.setText("start");
    }
}

ho provato ad inserire

Codice (Java): [Seleziona]
timerHandler.removeCallbacks(timerRunnable);
nel mio IF ma senza risultato.

Insomma la mia domanda è ... come interrompere (e magari lasciare a video) il timer una volta raggiunti 5 secondi?

Grazie!