86 votes

Fermer l'activité en cours lorsque vous n'avez qu'une référence au Contexte

Si j'ai une référence à Context est-il possible de terminer l'activité en cours ?

Je n'ai pas la référence de l'activité actuelle.

0 votes

stackoverflow.com/questions/8586818/ Jetez un coup d'œil à cet article :)

248voto

2red13 Points 4424

Oui, avec un plâtre :

((Activity) ctx).finish();

2 votes

Seulement si c'est l'activité en cours, sinon l'activité non courante sera terminée :)

6 votes

Cela pourrait entraîner des problèmes si le Context est en fait un contexte d'application.

1 votes

Comment faire si le contexte est un contexte d'application. j'exécute un fil de minuterie dans une classe et si le temps se termine je veux fermer l'activité en cours de cette classe .

15voto

Dans mon cas, ce qui suit a fonctionné,

Je dois terminer mon activité dans une AsyncTask onPostExcute().

Alors que ma classe AsyncTask est une classe publique séparée, qui a un constructeur avec un paramètre de Contexte.

((Activity)(mContext)).finish();

Seul ce qui précède a fonctionné pour moi... De toute façon, j'ai eu cette idée grâce aux réponses de @2red13 et @lucy... Merci à tous...

0 votes

Ce n'est pas du tout une forme différente ((Activity) mContext).finish() .

14voto

Alan Poggetti Points 186

Je sais que c'est un vieux post mais, peut-être que ce serait une bonne idée de l'appeler comme ça :

if(context instanceof Activity){
                ((Activity)context).finish(); }

De cette façon, nous nous assurons que nous ne recevons pas de ClassCastExceptions inutiles.

1 votes

Cela n'a pas clos l'activité pour moi

0 votes

Moi aussi, activité toujours en cours

2voto

J'ai utilisé name_of_class.this.finish() ;

2voto

Lucy Points 415

Si vous avez accès à la vue en cours de l'activité que vous voulez terminer (par exemple, vous êtes dans un écouteur de clics), vous pouvez le faire :

((Activity)getContext()).finish();

(Avec des remerciements à 2red13 pour me faire venir ici).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X