2 votes

Que se passe-t-il exactement dans le morceau de code où la méthode newInstance() est utilisée de manière statique ?

Je comprends presque tout dans ce code, sauf quand newIstance() est utilisé. Quelqu'un pourrait-il m'expliquer ? Merci beaucoup.

public class DateDialogFragment extends DialogFragment {

public static String TAG = "DateDialogFragment";

static Context sContext;
static Calendar sDate;
static DateDialogFragmentListener sListener;

public static DateDialogFragment newInstance(Context context, int titleResource, Calendar date){
    DateDialogFragment dialog  = new DateDialogFragment();

sContext = context;
    sDate = date;

Bundle args = new Bundle();
args.putInt("title", titleResource);
dialog.setArguments(args);
return dialog;
   }
}

J'ai fait une modification, je suppose que ça fonctionne différemment quand c'est statique. Je suppose que c'est la raison pour laquelle je suis confus. Comment la méthode est-elle modifiée quand elle est statique ? Je ne vois pas vraiment pourquoi ne pas le faire dans le constructeur ?

2voto

Cristian Points 92147

Lorsque vous utilisez des fragments (toute classe qui étend Fragment ), vous avez souvent besoin de transmettre des données. Pour ce faire, vous pouvez utiliser la fonction setArguments qui reçoit un Bundle . Comme cela nécessite beaucoup de code (créer le paquet, prendre en compte les noms de clés, etc.), il est courant de passer les données à une méthode statique (généralement appelée newInstance ). L'idée de cette méthode est de créer le paquet d'arguments et de le passer à l'option Fragment puis il renvoie le fragment et vous pouvez le mettre où vous voulez.

Un autre avantage de l'utilisation des fragments de cette manière est que lorsque vous insérez un fragment directement dans une présentation XML, il doit y avoir un constructeur vide (ou rien du tout). Si vous créez un fragment avec un constructeur (pour passer ses données nécessaires), vous pourriez obtenir des erreurs concernant le constructeur vide manquant.

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