174 votes

Pourquoi vouloir éviter les constructeurs par défaut dans les fragments ?

Je crée une application avec Fragments et dans l'un d'eux, j'ai créé un constructeur par défaut et j'ai reçu cet avertissement :

Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle) instead

Quelqu'un peut-il me dire pourquoi ce n'est pas une bonne idée ?

Pouvez-vous également me suggérer la manière dont je pourrais accomplir cette tâche ?

public static class MenuFragment extends ListFragment {
    public ListView listView1;
    Categories category;

    //this is my "non-default" constructor
    public MenuFragment(Categories category){
        this.category = category;
    }....

Sans utiliser le constructeur par défaut ?

3 votes

Non, ça n'aide pas. Ils n'ont pas répondu à ma question. Mais merci quand même :)

35 votes

@BlaineOmega En fait, celui-ci en particulier : stackoverflow.com/a/11602478/321697 répond définitivement à votre question. Lors d'un changement d'orientation ou d'un autre événement qui entraîne la recréation du fragment, Android utilise le constructeur par défaut ainsi que le Bundle passé en argument. Si vous utilisez un constructeur personnalisé, dès que le fragment est recréé suite à l'un de ces événements, tout ce que vous avez fait dans le constructeur personnalisé est perdu.

0voto

Akop Vardanian Points 11

Si le fragment utilise des constructeurs non par défaut après le changement de configuration, le fragment perdra toutes les données.

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