Comment reprendre l'activité au lieu de redémarrer quand il va “vers le haut” de la barre d'action
J'ai deux activités. Dire Activity A
et Activity B
.
De Activity A
je clique sur un bouton pour lancer Activity B
C'est le code que j'utilise pour ceci:
Intent intent = new Intent(this, ActivityB.class);
this.startActivity(intent);
Maintenant, en ce moment, je suis dans Activity B
. Sur la sur la méthode de création de Activity B
, j'ai activer le bouton up.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_news);
getActionBar().setDisplayHomeAsUpEnabled(true); //Here//
}
et sur la poignée d'événement pour les boutons "up", j'ai ce code:
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case android.R.id.home:
finish();
NavUtils.navigateUpFromSameTask(this);
default:
return super.onOptionsItemSelected(item);
}
}
Maintenant, je décide de retourner à Activity A
je clique sur le bouton dans la barre d'action qui ressemble à ceci:
Maintenant le problème c'est que quand je clique sur le "bouton", il va revenir à Activity A
qui est bien, mais il redémarre il. Comment le faire arrêter de redémarrer? J'ai juste envie de reprendre.
Lorsque j'utilise mon bouton de retour, il fonctionne comme prévu. j'.e, il va à Activity A
et reprend au lieu de redémarrer il.
Je veux que ma reprise de l'activité en raison de cette activité, j'ai télécharger une chaîne de caractères en ligne et donc je ne veux pas de garder les re télécharger les données lorsqu'un utilisateur passe de Activité B -> Activité
Modifier Mon fichier de manifeste pour Activity B
section ressemble à ceci:
<activity
android:name="com.example.android.ActivityB"
android:label="@string/title_activity_view_news"
android:parentActivityName="com.example.android.ActivityA">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.android.ActivityA" />
</activity>
Edit 2 [Répondre]
Ok, donc, c'était assez inattendu, mais dans mon AndroidManifest.xml dans l'Activité d'Une section, j'ai dû ajouter la ligne suivante de la doublure. android:launchMode="singleTop"
de sorte qu'il ressemble maintenant à ceci:
<activity
android:name="com.example.android.ActivityA"
android:label="@string/app_name"
android:launchMode="singleTop"> //**HERE**//
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
L'explication de ce qui est donné ici
- êtes-vous déclarer ActivityA en tant que Parent d'activité ?
- Je crois que j'ai fait. Vérifier mon
AndroidManifest.xml
j'ai posté à la fin de ma question - vous ne savez pas si c'est ce que vous avez besoin, mais vous pouvez prendre un coup d'oeil: stackoverflow.com/a/16147110/3286163
- Putain ce que c'était la solution tout le temps! Merci de m'avoir il y!
Vous devez vous connecter pour publier un commentaire.
Devraient ai ajouté comme une réponse au lieu d'un commentaire.. mais là, vous allez de sorte que vous pouvez accepter si vous voulez, de sorte que les autres puissent voir si nécessaire.
https://stackoverflow.com/a/16147110/3286163
En gros, pour résumer le android sera toujours recréer de l'activité, sauf si vous spécifiez-il pas à avec
Remarque: il ne fonctionnera pas si le retour de l'activité n'est pas sur le dessus de la pile de retour comme indiqué dans la référence.
Pour quelqu'un d'autre, veuillez upvote la réponse dans l'url au lieu de la mienne si vous trouvez cela utile.
Vous pouvez également obtenir le même résultat par programmation