2014-04-17 2 views
0

Je veux remplacer le fragment et détruire précédent.Android - Fragment remplacer non remplacé

Voici mon code:

FragmentManager manager = getFragmentManager(); 
FragmentTransaction newT = manager.beginTransaction(); 
newT.replace(R.id.activity_content currentFragment, CE_TAG); 
newT.commit(); 

J'ai lu cet article: http://sapandiwakar.in/replacing-fragments/

Je n'ai pas mis le fragment dans la pile de retour, mais mon fragement ne sont pas détruits!

onPause(), onDestroy(), onStop() ne sont jamais appelés.

Merci.

+0

comment savez-vous qu'il ne détruit? – tyczj

+0

Parce que j'afficher un journal dans la méthode onDestroy –

Répondre

0

Essayez

Fragment f = new YOurFragment(); 

fragmentTransaction.remove(f).commit();

Hope it helps

+0

Déjà essayé, mais ne fonctionne pas. –

+0

vous pouvez utiliser la même ligne à l'intérieur de votre onDestroy() metho mais au lieu de supprimer (f) vous devez appeler remove (this) – mha90

+0

onDestroy n'est jamais appelé! –

0

Essayez d'ajouter cette ligne de code après validation de la transaction.

getChildFragmentManager().executePendingTransactions(); 

Cochez cette case executePendingTransactions.

Si vous remplacez un fragment avec la même étiquette, le chevauchement risque de se produire. En outre, si votre conteneur de fragments est un LinearLayout, il ne peut pas être mis à jour après remplacement (d'après mon expérience uniquement).

0

Un fragment est conservé en mémoire même s'il n'est plus visible. Si vous le rappelez, onCreateView est appelée et la partie visuelle du fragment est recréée mais l'objet réel est réutilisé. De la documentation:

OnDestroy() = Le dernier appel que vous recevez avant votre activité est détruite. Cela peut arriver soit parce que l'activité termine (quelqu'un appelé finish() dessus, ou parce que le système est temporairement détruisant cette instance de l'activité pour économiser de l'espace.) Vous pouvez distinguer ces deux scénarios avec la méthode isFinishing() .

vous devriez plutôt envisager onDestroyView, ou appelez finish si cela vous convient mieux.

http://developer.android.com/reference/android/app/Fragment.html

Questions connexes