{"id":884,"date":"2013-07-23T12:18:57","date_gmt":"2013-07-23T11:18:57","guid":{"rendered":"http:\/\/cyol.fr\/blog\/?p=884"},"modified":"2013-11-14T16:15:54","modified_gmt":"2013-11-14T15:15:54","slug":"dev-android-fermer-une-activity-depuis-une-autre","status":"publish","type":"post","link":"https:\/\/cyol.fr\/blog\/post\/dev-android-fermer-une-activity-depuis-une-autre\/","title":{"rendered":"D\u00e9v Android : Fermer une activity depuis une autre"},"content":{"rendered":"<p><a href=\"https:\/\/cyol.fr\/blog\/wp-content\/uploads\/billets\/icones\/Android_Robot_100.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-124\" title=\"Android_Robot_100\" alt=\"Logo Android\" src=\"https:\/\/cyol.fr\/blog\/wp-content\/uploads\/billets\/icones\/Android_Robot_100.png\" width=\"85\" height=\"100\" \/><\/a>En faisant SRDice je m&rsquo;\u00e9tais heurt\u00e9 un moment \u00e0 la probl\u00e9matique de bien fermer toutes les activity de l&rsquo;application sur une action. La solution (une fois trouv\u00e9e, expliqu\u00e9e par <a title=\"Blog d'Igor Khrupin (en)\" href=\"http:\/\/www.hrupin.com\/\" target=\"_blank\">Igor Khrupin<\/a>) avait \u00e9t\u00e9 simple : Faire h\u00e9riter toutes mes activity non pas directement de Activity mais d&rsquo;une activity personnelle (qui elle \u00e9tend Activity). Et ensuite de mettre le processus de fermeture d&rsquo;Activity sur cette Activity m\u00e8re : <a title=\"D\u00e9v Android : Fermer toutes les Activity de son appli\" href=\"https:\/\/cyol.fr\/blog\/post\/dev-android-fermer-toutes-les-activity-de-son-appli\/\">D\u00e9v Android : Fermer toutes les Activity de son appli<\/a><\/p>\n<p>Avec Le Val des Etoiles, je me retrouve avec un probl\u00e8me similaire mais avec une contrainte suppl\u00e9mentaire.<\/p>\n<p>&nbsp;<\/p>\n<p><!--more-->En effet, il se trouve que pour afficher les onglets j&rsquo;utilise en MainActivity\u00a0 une extension non pas de Activity mais de TabActivity.<\/p>\n<p>Par contre toute la gestion du contenu des Onglet (et des menus) se fait bien dans des h\u00e9ritiers de Activity.<\/p>\n<p>Hors ce qu&rsquo;il se passait quand je demandais la fermeture des Activity, toutes les filles de LeValDesEtoilesActivity (extends Activity) cherchaient \u00e0 se fermer, mais LVDEMainActivity (extends TabActivity) n&rsquo;\u00e9tait pas du tout impact\u00e9 par cette demande de fermeture, et du coup l&rsquo;application ne se fermait pas.<\/p>\n<p>J&rsquo;ai donc cherch\u00e9 \u00e0 fermer une Activity (LVDEMainActivity) depuis une autre (LeValDesEtoilesActivity).<\/p>\n<p>J&rsquo;ai trouv\u00e9 la r\u00e9ponse sur : <a title=\"Killing one activity from another\" href=\"http:\/\/stackoverflow.com\/questions\/14355731\/killing-one-activity-from-another\/16438596#16438596\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/14355731\/killing-one-activity-from-another\/16438596#16438596<\/a><\/p>\n<p>Voici en quoi \u00e7a consiste :<\/p>\n<p>Dans l&rsquo;Activity que vous chercher \u00e0 fermer (dans mon cas : LVDEMainActivity) d\u00e9finissez :<\/p>\n<pre class=\"brush:java\">public class LVDEMainActivity extends TabActivity {\r\n\u00a0\u00a0 \u00a0static LVDEMainActivity LVDEMainActivity;\r\n    public void onCreate(Bundle savedInstanceState) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 LVDEMainActivity = this;\r\n    }\r\n\r\n\u00a0\u00a0\u00a0 public static LVDEMainActivity getInstance(){\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 return LVDEMainActivity;\r\n\u00a0\u00a0\u00a0 }\r\n}<\/pre>\n<p>La variable static stockera l&rsquo;instance de l&rsquo;Activity. Ceci permettra donc dans l&rsquo;Activity qui cherche \u00e0 fermer (dans mon cas LeValDesEtoilesActivity) d&rsquo;agir directement sur LVDEMainActivity :<\/p>\n<pre class=\"brush:java\">\u00a0\u00a0 \u00a0LVDEMainActivity.getInstance().finish();<\/pre>\n<p>Et hop, le tour est jou\u00e9 !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>http:\/\/stackoverflow.com\/questions\/14355731\/killing-one-activity-from-another\/16438596#16438596 [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":124,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,2,81],"tags":[26,114,112],"class_list":["post-884","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","category-developpement","category-le-val-des-etoiles","tag-activity","tag-android","tag-srdice","odd"],"_links":{"self":[{"href":"https:\/\/cyol.fr\/blog\/wp-json\/wp\/v2\/posts\/884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cyol.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cyol.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cyol.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cyol.fr\/blog\/wp-json\/wp\/v2\/comments?post=884"}],"version-history":[{"count":12,"href":"https:\/\/cyol.fr\/blog\/wp-json\/wp\/v2\/posts\/884\/revisions"}],"predecessor-version":[{"id":910,"href":"https:\/\/cyol.fr\/blog\/wp-json\/wp\/v2\/posts\/884\/revisions\/910"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cyol.fr\/blog\/wp-json\/wp\/v2\/media\/124"}],"wp:attachment":[{"href":"https:\/\/cyol.fr\/blog\/wp-json\/wp\/v2\/media?parent=884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cyol.fr\/blog\/wp-json\/wp\/v2\/categories?post=884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cyol.fr\/blog\/wp-json\/wp\/v2\/tags?post=884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}