Jump to content

Afficher la vue main après le Kill de l'application


fa18swuss

Recommended Posts

Bonjour a tous !

J'ai un problème, dans mon application :

  • Je lance mon application,
  • J'ouvre une sous-activtity
  • J’appuie sur Home
  • Je kill mon application
  • J'ouvre l'application et elle plante.

Dans le onCreate() de ma sous-activity, j'accède à une variable, et je teste si elle est null. Si oui, je lance finish()

public void onCreate(Bundle savedInstanceState)  {
 super.onCreate(savedInstanceState);
    setContentView(R.layout.list);
    Bundle data;

    data = [Toto.getStaticVariable()];
    if (data == null) {
         finish();
    }
}

Le problème, c'est que le finish() n'a pas d'effect !

J'ai 2 possibilité pour résoudre ce bug :

  1. Après un kill, afficher l'activity principale
  2. Si ma variable est null, finish pour afficher l'activity principale, mais ça marche pas.

Quelqu'un à une idée ?

Merci d'avance

Link to comment
Share on other sites

Quelle est l'erreur qui se produit ? As-tu un log de l'exception ?

PS: l'utilisation de variables statiques tel que dans ton code n'est pas spécialement une bonne idée. Si le besoin est d'échanger des données entre Activities, tu peux utiliser les Intent pour cela

Link to comment
Share on other sites

Le problème vient de ma méthode pour transférer des donnes entres les vues.

Dans mon application, j'ai un tableau (ArrayList) de bundle. Avant d'ouvrir l'activity, j'ajoute dans ce tableau mes données, et je passe dans l'intent l'id des données dans la liste. Dans le oncreate de la activity enfant, je récupre dans l'intent l'id, et dans l'application les données.

Ce système fonctionne tant que l'application n'est pas kill. Sinon, si la liste est vide, je retourne un bundle null.

C'est ce code que j'ai transformé par le Toto.Titi()

Ce que je veux, c'est quand l'application est kill, et que je relance l'application, je test que je n'ai pas de donnée, et j'affiche l'activity parent.

J'espère avoir été suffisamment clair.

Link to comment
Share on other sites

Qu'entends-tu par "killer" l'applicaton ? La tuer violemment avec un tueur de tâches ? Dans ce cas, tu devrais, lorsque tu relances l'application, arriver sur la première Activity, et non sur la seconde comme tu sembles le dire... Ou alors, je n'ai pas compris...

Link to comment
Share on other sites

MainActivity :

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.Light.NoTitleBar" android:name=".MyApplication">
 <activity android:label="@string/app_name" android:windowSoftInputMode="stateHidden|stateAlwaysHidden" android:name="MainActivity" android:theme="@android:style/Theme.Light.NoTitleBar" android:configChanges="orientation">
		<intent-filter>
			<action android:name="android.intent.action.MAIN" />
			<category android:name="android.intent.category.LAUNCHER" />
		</intent-filter>
	</activity>
 <activity android:name="SubActivity" android:theme="@android:style/Theme.Light.NoTitleBar" android:configChanges="orientation" ></activity>

Link to comment
Share on other sites

D'après ton manifest, c'est bien MainActivity qui est le point d'entrée de ton application; c'est sur cette Activity que tu devrais te retrouver lorsque l'application est démarrée la première fois (ou lorsque tu la redémarres après un kill, cela doit être même chose)

Donc, là, je ne vois pas pourquoi tu arriverais directement sur SubActivity; fais-tu quelque chose de spécifique dans MainActivity qui parfois te ferais aller directement sur SubActivity ?

Sinon, j'ai bien une solution : arrête de killer comme un sauvage ton application ;)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...