775 votes

Meilleure pratique pour l'instanciation d'un nouveau fragment d'Android

J'ai vu deux pratiques générales pour instancier un nouveau Fragment dans une application :

Fragment newFragment = new MyFragment();

y

Fragment newFragment = MyFragment.newInstance();

La deuxième option fait appel à une méthode statique newInstance() y généralement contient la méthode suivante.

public static Fragment newInstance() 
{
    MyFragment myFragment = new MyFragment();
    return myFragment;
}

Au début, je pensais que le principal avantage était le fait que je pouvais surcharger la méthode newInstance() afin de donner de la flexibilité lors de la création de nouvelles instances d'un Fragment - mais je pouvais aussi le faire en créant un constructeur surchargé pour le Fragment.

J'ai raté quelque chose ?

Quels sont les avantages d'une approche par rapport à une autre ? Ou s'agit-il simplement d'une bonne pratique ?

0 votes

Lorsqu'il y a des paramètres, il n'y a pas de choix, et cette question est largement traitée ici. Cependant, la question reste posée pour la construction sans argument du fragment.

1 votes

Après avoir appris le factory pattern et comment une classe appelante qui n'instancie pas elle-même un objet aide à les découpler, j'ai pensé que ce serait un point fort pour la méthode newInstance(). Ai-je tort ? Je n'ai pas vu cet argument spécifique parlé comme un avantage.

-10voto

Stefan Bogaard Points 104

Je crois que j'ai une solution beaucoup plus simple pour cela.

public class MyFragment extends Fragment{

   private String mTitle;
   private List<MyObject> mObjects;

   public static MyFragment newInstance(String title, List<MyObject> objects)
   MyFragment myFrag = new MyFragment();
   myFrag.mTitle = title;
   myFrag.mObjects = objects;
   return myFrag;
   }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X