2010-07-08 4 views
1

J'ai un problème et c'est mon SplashScreen que j'ai. Il est construit comme une intro et après 3 secondes il montre le menu principal du programme. Quoi qu'il en soit, si j'appuie sur le bouton Retour ou Accueil pendant le temps que le SplashScreen affiche, il se ferme, mais l'activité que j'ai choisi de suivre après le SplashScreen tournera toujours après les trois secondes.arrêter l'activité suivante si la touche d'accueil ou appuyez sur le dos est appuyé - Android

Mon code: ***** ***** MISE À JOUR CODE

Handler ur = new Handler(); 
    myRun = new Runnable() { 
      public void run() {  
        mainIntent = new Intent(SplashScreen.this,MyApp.class); 
        SplashScreen.this.startActivity(mainIntent); 
        SplashScreen.this.finish(); 
        overridePendingTransition(R.anim.fadein, 
          R.anim.fadeout);  
      } 
    }; 
    ur.postDelayed(myRun, SPLASH_DISPLAY_TIME); 
} 

protected void onStop() { 
    super.onStop(); 
    ur.removeCallbacks(myRun); 
} 

Même si j'ai un onStop() dans ce SplashScreen, la prochaine activité sera toujours courir après le SPLASH_DISPLAY_TIME.

Depuis que j'ai changé le code, j'ai obtenu Force Close après avoir appuyé sur le bouton Home et le SplashScreen a disparu, aussi, je ne peux pas lancer ma deuxième activité.

Répondre

2

Essayez de le faire de cette façon:

private static final int SPLASH_DISPLAY_TIME = 3000; 
Handler ur = new Handler(); 
Runnable yourRunnable = new Runnable() {  
     public void run() {  
       mainIntent = new Intent(SplashScreen.this,MyApp.class); 
       SplashScreen.this.startActivity(mainIntent); 
       SplashScreen.this.finish(); 
       overridePendingTransition(R.anim.fadein, 
         R.anim.fadeout);  
     } 
}; 
ur.postDelayed(yourRunnable, SPLASH_DISPLAY_TIME); 

Puis, quelque part sur OnDestroy ou toute autre méthode que vous utilisez pour détecter votre activité SplashScreen se ferme:

// somewhere 
ur.removeCallbacks(yourRunnable); 
+0

ça marche! Accepté! – Curtain

Questions connexes