2010-11-09 6 views
15

Pendant que l'application est en cours d'exécution, j'appuie sur le bouton HOME pour fermer l'application. Lorsque je relance l'application, elle reprend sur la page affichée avant de cliquer sur HOME. Je veux que l'application commence avec l'affichage initial à la place. J'ai utilisé finish() pour finir l'activité mais ça ne marche pas. Aucune suggestion?Comment détruire une activité sur Android?

+0

où avez-vous placé le 'finish()'? Dans la plupart des cas, le fait d'appuyer sur la touche d'accueil met uniquement l'activité en pause, sauf si Android a besoin de cette partie de la mémoire de manière urgente. – xandy

+0

Vous ne nous avez pas expliqué où vous avez utilisé finish(). – cababunga

+0

@Nikki: Pouvez-vous poster le code, afin que nous puissions trouver ce que vous avez fait de mal dans ce code ?? –

Répondre

20

Vous avez probablement plusieurs instances de la même activité. Pour résoudre ce genre de problèmes, créez votre propre classe d'activité parent, par ex. MyRootActivity qui tiendra la liste statique de toutes les activités disponibles/vie:

public class MyRootActivity extends Activity 
{ 
    private static final String TAG=MyRootActivity.class.getName(); 
    private static ArrayList<Activity> activities=new ArrayList<Activity>(); 


    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     activities.add(this); 
    } 

    @Override 
    public void onDestroy() 
    { 
     super.onDestroy(); 
     activities.remove(this); 
    } 

    public static void finishAll() 
    { 
     for(Activity activity:activities) 
      activity.finish(); 
    } 
} 

Pour que toutes vos activités doivent être les enfants de MyRootActivity. Ensuite, lorsque vous êtes sur le point de fermer votre application, appelez simplement MyRootActivity.finishAll();

+0

private static ArrayList activities = new ArrayList ; erreur dans mon provoquant code ... Dire erreur de syntaxe sur jeton (s), construction mal placée (s) Que pourrait-on Reson – piku

+2

@piku: Je suis la même erreur sur cette même ligne » ... nouvelle ArrayList ; ". Je suis assez sûr qu'il est censé être "private static ArrayList activities = new ArrayList ();" - voir les parenthèses? –

-2

essayer d'appeler super.onPause() premier et appeler plus tard finish() dans votre onPause() talon

+0

Ce n'est pas une bonne idée, conception très anti-modèle. – visc

0

Créer un objet statique d'activité qui finissent activité sur une autre activité et affecter l'activité dans ce à dire que vous pouvez pouvez ajouter d'autres activités

public class demoActivity extends AppCompatActivity { 
    public static Activity self_intent; 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.demo_activity); 
      selfintent=this; 
    } 

    //Other functions-------------- 
} 

faire la même chose pour d'autres activités

sur d'autres

public class finishingActivity extends AppCompatActivity { 
     public Button activityCloseBtn; 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.finishing_activity); 

      activityCloseBtn= (Button) view.findViewById(R.id.activity_close_btn); 
      activityCloseBtn.setOnClickListener(new View.OnClickListener() {  
      @Override 
      public void onClick(View v) { 
       demoActivity.selfintent.finish(); //for finish demoActivityactivity 

       //for other activities Activity.selfintent.finish(); 
       finish(); //for finish current activity 
      } 
    }); 
Questions connexes