L'Activité Et Le Fragment D'Interaction

J'ai un Activity avec plusieurs Fragments. Je veux montrer une DialogFragment ou d'en ouvrir un autre Fragment de l'un des Fragments. Je sais qu'un Activity doit être celui qui est chargé de l'ouverture Fragments donc, au lieu de cela, j'ai essayé un couple de choses.

PREMIÈRE

J'ai essayé d'utiliser getActivity() et le jeta donc, je peux appeler une méthode dans la Activity de montrer un Fragment cependant, cela crée une dépendance dans le Fragment avec le Activity et je voudrais éviter d'ajouter une dépendance si possible.

DEUXIÈME

Ensuite, j'ai essayé un écouteur d'aviser le Activity qu'il doit afficher une Fragment. J'ai donc créé une classe dans le Activity pour mettre en œuvre l'auditeur de l'interface. Mais j'ai eu des problèmes parce que j'ai eu à utiliser New MyActivity().new Listener(); et il lancerait une Exception quand j'ai essayé d'utiliser getSupportFragmentManager() depuis cette instance de la Activity n'est pas initialisé.

TROISIÈME

J'ai ensuite essayé d'avoir le Activity mettre en œuvre l'auditeur directement qui fonctionne parce que je suis seulement à la création d'une dépendance à l'auditeur, et non pas l'Activité. Mais maintenant je suis arrivé à un point où mon Activity sera mise en œuvre 2 - 4 interfaces différentes ce qui me fait hésiter, car il réduit considérablement la cohésion.

De sorte que toute façon j'ai essayé j'ai l'impression de courir dans un mur de brique et de créer des dépendances, je ne suis pas sûr que j'ai besoin de créer. Je suis vissé et aller avec une de ces options? Si donc l'option qui serait le mieux? Toute aide ou suggestions sont grandement appréciés.

Il y a beaucoup de façons de le faire, je préfère le que de-couplé que possible, et pour cela, j'ai comme un événement de bus. Voir otto, par exemple: carré.github.io/otto. (Permet de vous débarrasser de tous les/l'interface d'écouteur trucs. Transmettre des données, le faire avec de fortes types, de le faire dans un claire et concise.)
Il semble prometteuse. Je vais avoir à le vérifier. Merci pour l'astuce.

OriginalL'auteur Jason Crosby | 2013-07-03