2016-10-11 4 views
0

Je dois écouter quand une transaction de fragment est effectuée, par exemple, lorsque je remplace un fragment par un autre, sans appel à addToBackStack(). La classe FragmentManager fournit un rappel addOnBackStackChangedListener, mais lorsque j'effectue un remplacement de fragment sans appel à addToBackStack, il n'est pas exécuté. Edit: l'opération d'écoute est effectuée dans une classe qui n'a accès qu'à l'instance d'activité et à son gestionnaire de fragment.Écouteur de transaction de fragment Android

+0

à quelles fins vous besoin? –

+0

Pour une bibliothèque qui effectue certaines actions lorsqu'un fragment est détruit. –

Répondre

0

Vous pouvez utiliser la méthode onAttach() de Fragment.

+0

L'opération d'écoute des transactions fragmentées est effectuée dans une classe qui n'a accès qu'à une instance d'activité et à son gestionnaire de fragmentation. Je vais modifier ma question pour clarifier. –

0

Vous pouvez utiliser la classe de base pour tous vos fragments. Ensuite, vous pouvez remplacer la méthode onDetach(). Par exemple

public class BaseFragment extends Fragment { 

@Override 
public void onDetach() { 
    // run code that needed by your library. e.g. 
    if (getActivity() != null && getActivity() instanceof MainActivity) { 
    ((MainActivity)getActivity()).someMethodToDetectOnDetach(); 
    } 
    super.onDetach(); 
} 

Et puis Valorisez vos fragments de BaseFragment comme celui-ci

public class MyFragment extends BaseFragment { 
// ..... 
} 
+0

Le même comportement que vous pouvez utiliser dans onAttach (Context context); méthode (peut-être sera encore mieux) –

+0

Oui, je pourrais le faire, mais je construis un projet de bibliothèque et je ne veux pas forcer ce genre de choses, comme utiliser une classe de base. Mais je pense qu'il n'y a pas d'autres moyens de le faire. –