2012-07-17 2 views
0

Chose très étrange ici. Au début, j'avais une activité qui était l'activité de démarrage (activité A). Il avait l'étiquette android:launchMode="singleTask" associée. Pas de problème. Mes exigences ont changé et maintenant je fais l'activité B l'activité de démarrage. J'ai copié le filtre d'intention, j'ai changé le nom en ".ActivityB" et j'ai aussi déplacé le tag du mode de lancement.Activité de démarrage commuté par Android: L'ancienne activité de démarrage se comporte toujours comme telle

Cela semble fonctionner; Quand je démarre l'application, je vais à l'activité B. Cependant, quand je passe de l'activité B à l'activité A, puis cliquez sur le bouton Précédent l'application quitte et ne rouvrira pas (il rouvrira si je n'ai pas la balise de mode de lancement.

Un autre exemple. Si je passe de l'activité A à l'activité B à l'activité A à l'activité B, tout va bien. Quand je clique dessus je vais à l'activité A (comme prévu) cependant quand je clique de nouveau je vais à une instance précédente de l'activité A (euh oh) puis je clique de nouveau dessus et quitte l'application. Les deux fois en sautant l'activité B.

Je suis clairement en train de négliger quelque chose mais je n'arrive pas à comprendre quoi. Je ne remplace aucune fonctionnalité de bouton de retour et tout fonctionnait parfaitement avant que je commute l'activité de démarrage.

Modifier Voici un extrait de mon manifeste avant tout changement

<activity android:name=".ActivityA" android:windowSoftInputMode="stateHidden" android:label="@string/app_name" android:launchMode="singleTask"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="ActivityB"></activity> 

Voici un extrait après le changement

<activity android:name=".ActivityB" android:windowSoftInputMode="stateHidden" android:label="@string/app_name" android:launchMode="singleTask"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="ActivityA"></activity> 
+0

Avez-vous copié ou _move_ le filtre d'intention? Vous ne savez pas ce qui se passera si vous avez 2 activités avec un filtre d'intention de lancement sur em – Russ

+0

Non, s'il vous plaît voir le edit, Aussi j'ai entendu dire que vous pouvez réellement avoir deux activités déclarées être une activité de démarrage (peut-être que j'ai mal entendu). Je ne suis pas sûr de ce que ça fait .. – Sababado

Répondre

1

Sons comme activité B est d'obtenir finish() appelé ou quelque chose . Je suggère de mettre quelques instructions log dans OnCreate, OnPause, OnResume, et OnDestroy afin que vous puissiez surveiller la vie de l'activité B. C'est une activité de highlander (il ne peut y en avoir qu'une), vous n'avez donc pas à vous soucier de créer plusieurs instances . Aussi, vous pouvez regarder/remplacer onNewIntent et en plaçant quelques appels de journalisation là.

Pas vraiment une réponse, mais des dollars pour des beignets vous ou quelqu'un qui appellent finish() après le début de l'activité A, ou lorsque l'activité B passe en arrière-plan et que vous l'avez oublié.

Si ce n'est pas le cas je serais intéressé de savoir comment/quand l'activité B meurt. Habituellement, si ça s'arrête à cause d'une erreur en y retournant, Android va vous aboyer mais comme vous ne l'avez pas mentionné, je suppose que ce n'est pas le cas.

+0

Si je pouvais vous envoyer des beignets, je le ferais. Vous étiez mort avec cette dernière addition. À l'origine, j'activais l'activité B en retournant à l'activité A (l'activité à la maison) parce que l'activité B n'était plus nécessaire pour quoi que ce soit, alors je me disais que je finirais et que je libérerais quelques ressources. – Sababado

+0

Je préférerais les dollars en réalité: D – Russ

Questions connexes