Devrions-nous utiliser setTargetFragment()? Je pensais que les Fragments ne doivent pas communiquer les uns avec les autres
Le développeur android tutoriels de me recommander à l'aide de l'hôte activités de fragments de passer autour des données et ainsi de suite, alors pourquoi est-il un set/get fragment cible méthode?
Ma candidature à ce jour contient une foule d'activité, et un fragment, qui a un bouton qui lance un DialogFragment
, dans lequel il y a un bouton qui lance un AUTRE DialogFragment
. À l'aide de setTargetFragment/getTargetFragment
a fait de cette épreuve un peu confus, alors je suis la pensée de réimplanter de laisser mon activité principale de la poignée DialogFragment.show
méthodes par le biais de mon principal fragment de l'interface personnalisée.
Est-ce la bonne façon de penser? Ou il y a pas de mal à l'aide de setTargetFragment
? Quelqu'un peut-il fournir de bons et de mauvais exemples de l'aide?
OriginalL'auteur Toni_Entranced | 2013-09-22
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas qu'il y est implicite mal à employer setTargetFragment, cependant, je voudrais l'utiliser seulement dans des circonstances très particulières. Par exemple, si le fragment cible est seulement va jamais être utilisé par le fragment (en tenant compte de la réutilisation des objets et de la conception de vos classes pour être réutilisable lorsque cela est possible) et même alors, avec parcimonie.
Par les utilisez trop, vous allez vous retrouver avec ce que vous avez vu - le code source de confusion qui est difficile à suivre et à entretenir. Sur le départ, par marshaling tout par le biais de votre activité vous permet de maintenir un "plat" de la hiérarchie qui est simple à suivre et à entretenir.
Je pense que la décision d'utiliser setTargetFragment ou pas, c'est un coding-style/philosophique qui, de sagesse et d'expérience, il "se sent" bien ou mal. Peut-être que dans votre cas, par la preuve que vous vous interrogez sur votre ancien code, il vous donne la sagesse 🙂
Si vous utilisez setTargetFragment via l'interface de rappel, vous n'aurez pas quelques fragments les uns aux autres - toutefois, si vous lancez un Fragment spécifique, alors je considère qu'un mauvaise idée, car elle introduit un couplage étroit.
OriginalL'auteur nomachinez
Aussi, vous pouvez vous retrouver avec de l'exception de non cible fragment trouvé dans fragment de manager. Ce qui se passe si après rotation (ou d'autres config changer) votre fragment cible ne sera pas ajouté à nouveau à la fragment de manager par le moment où l'appelant fragment sera l'ajout d'.
Imaginez que vous avez une sorte de Confirmation fragment de laquelle vous ajoutez de
MainFragment
de la manière suivante:Maintenant sur certains de confirmation, cliquez sur le bouton, vous appelez une méthode de
MainFragment
en appelant le:C'est joli et simple, mais si vous faites pivoter l'écran et, pour une raison
ConfirmationFragment
sera ajouté àFragmentManager
avantMainFragment
, une exception sera levée, indiquant que le fragment cible ne se trouve pas dans le fragment gestionnaire devotre fragment cible dans onSaveInstanceState"? Qu'est-ce que cela signifie? "Sauver" les fragments, c'est le travail du fragment manager. Je n'ai jamais entendu avant que quelqu'un a essayé de "sauver" un fragment. Une boîte de dialogue ne sera jamais à recréer de l'appelant.
Vous avez juste à utiliser l'enfant fragmentmanager de l'appelant / targetfragment lors de la création de la boîte de dialogue. Ensuite, vous pouvez faire tourner autant que vous le souhaitez - il n'y aura pas jeté aucune exception.
OriginalL'auteur Max Ch