Aller au contenu

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

Lien vers le commentaire
Partager sur d’autres 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

Lien vers le commentaire
Partager sur d’autres 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.

Lien vers le commentaire
Partager sur d’autres 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...

Lien vers le commentaire
Partager sur d’autres 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>

Lien vers le commentaire
Partager sur d’autres 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 ;)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...