2017-03-08 1 views
0

J'ai une classe étendue CountDownTimer pendant 45 minutes. Je voudrais appeler un nouveau Activity lorsque le CountDownTimer est terminé (dans le onFinish), partout où l'utilisateur est (Activity ou Fragment).Appel d'une activité à partir d'une extension Classe CountDownTimer

Comment puis-je faire cela?

C'est ma classe Contre:

public class Counter extends CountDownTimer { 

    private static long millis; 
    private static Counter instance; 

    private Counter(long millisInFuture, long countDownInterval){ 
     super(millisInFuture,countDownInterval); 
    } 

    public static Counter initInstance(){ 
     instance = new Counter(2700000, 1000); 
     return instance; 
    } 

    public static Counter getInstance() throws Exception{ 
     if(instance==null){ 
      throw new Exception("Parameters not initialized. Initiate with initInstance"); 
     } else{ 
      return instance; 
     } 
    } 

    public boolean isFinish(){ 
     return millis <= 0; 
    } 


    @Override 
    public void onTick(long l) { 
     millis = l; 
    } 

    @Override 
    public void onFinish() { 
     // THIS IS WHERE I WANT TO CALL A NEW ACTIVITY ! 
    } 
} 

J'appelle mon compteur comme ceci:

Counter counterClass = Counter.initInstance(); 
counterClass.start(); 

Répondre

1

Vous avez juste besoin d'envoyer un contexte au constructeur de votre compteur, enregistrez-le dans votre compteur comme un attribut, puis appelez votre compteur comme ceci:

Counter counterClass = Counter.initInstance(getApplicationContext()); 
counterClass.start(); 

Et puis dans votre finition vous pouvez démarrer une activité normalement:

context.startActivity()