Comment faire un DatePicker avec DialogFragment et FragmentManager?
Donc, j'ai été là pour un moment, et je n'arrive pas à le comprendre. Je suis assez nouveau au développement Android, alors pardonnez-moi s'il vous plaît. Je n'étais pas trop familiarisé avec la création d'un Datepicker et j'ai appris à faire le obsolète juste pour obtenir le blocage de celui-ci. Utilisé ce tutoriel pour m'amener jusqu'à la vitesse:
http://developer.android.com/resources/tutorials/views/hello-datepicker.html
Mais maintenant, j'ai besoin de le changer, surtout pour ne pas utiliser de code obsolète, alors j'ai regardé tout autour, et j'ai trouvé 2 tutoriels, principalement celui-ci bien:
http://www.kylebeal.com/2011/11/android-datepickerdialog-and-the-dialogfragment/
Problème est, il est un code qui n'a pas de sens. Surtout cette partie:
//create new DateDialogFragment
DateDialogFragment ddf = DateDialogFragment.newInstance(this, R.string.set_date, date);
ddf.setDateDialogFragmentListener(new DateDialogFragmentListener() {
@Override
public void dateDialogFragmentDateSet(Calendar date) {
//update the fragment
mDateDetailFragment.updateDate(date);
}
});
ddf.show(getSupportFragmentManager(), "date picker dialog fragment");
Qui est supposé être ce qui est en cours d'exécution dans la classe d'activité qu'il fonctionne dans. J'ai donc de ce qui se passe dans le reste du code, et n'hésitez pas à regarder le reste comme il sera probablement aider. Le code est essentiellement suit presque le même parcours que l'original showDialog()
code. La mise en œuvre de DatePickerDialog.onDateSetListener
, et retournant une nouvelle DatePickerDialog
, à l'exception évidente des thats son à l'aide d'un DialogFragment. Mais c'est là que j'ai perdu.
Partie de la raison est parce que je ne suis pas vraiment sûr de où onCreateDialog()
retourne que les nouveaux DatePickerDialog. Si vous regardez le code que j'ai dit n'a pas de sens, les deux mDateDetailFragment
et getSupportFragmentManager()
n'ont jamais été instancié ou est apparu de nulle part ailleurs, donc je ne peux pas obtenir le tutoriel code à même de travail. Le Android Doc mentionne également qu'au lieu d'utiliser showDialog()
je devrais être en utilisant à la fois DialogFragment
et FragmentManager
, qui n'est pas fait ici. Seulement DialogFragment.
Donc, comme le titre, comment puis-je faire une DatPicker dans le non-depracted forme? Je voudrais veuillez demander à PAS de m'envoyer un lien, et disons coup d'oeil ici. Je l'ai fait. Croyez-moi. Si pas, au moins expliquer ce que j'ai manqué ce qui rend ce sens. Aussi, si quelqu'un peut réellement me dire où est le onCreateDialog()
méthode envoie le DatePickerDialog
, ce serait extrêmement utile. Je suis juste essayer de donner un sens à tout cela, plutôt que de copier et de coller le code (pas que ça fonctionne de toute façon). Merci beaucoup pour avoir pris le temps de lire ceci, et si toutes les clarifications nécessaires, renseignez-vous.
OriginalL'auteur Andy | 2012-06-13
Vous devez vous connecter pour publier un commentaire.
Aller dans l'ordre de votre post... \
1) le
onCreateDialog
retourne la boîte de dialogue pour la DialogFragment.2) je ne sais pas à propos de la
mDateDetailFragment.updateDate(date);
ligne... je pense qu'il a peut-être laissé un peu de code. MODIFIER Trouvé, c'est dans l'une des classes dans le fichier zip pour sa démo complète.3) Vous utilisez le fragment manager (c'est le
getSupportFragmentManager()
partie):Ok, cela dit, voici comment je l'ai fait (je suis en utilisant un DateSlider, mais substrat dans un Datepicker en place devrait être assez simple pour vous).
Dans le fragment/activité de l'appel de la DialogFragment:
Et mon DialogFragment:
Espère que cela aide à effacer votre confusion.
getSupportFragmentManager()
obtenir le FragmentManager? Est-il dans son code? J'aurais sans doute remarqué que. Je me sens stupide de ne pas.Que EST le fragment manager (lors de l'utilisation de la bibliothèque de prise en charge). Il serait
getFragmentManager
si vous n'étiez pas à l'aide de la bibliothèque de prise en charge. Quelle que soit la version que vous utilisez, c'est un appel au cadre pour vous donner un fragment de manager.Scratch! Je l'ai trouvé. L'activité de la classe. Je n'ai pas supposer que.
Je ne veux pas vous déranger, mais j'ai essayé de comprendre le code, mais depuis je n'ai jamais utilisé des fragments, je ne sais pas vraiment comment il s'adapte à tous ensemble, à collaborer avec le DatePickerDialog. Depuis que vous avez pris un coup d'oeil au code, pourriez-vous m'aider à comprendre les classes qui en fait travailler directement avec le DatePicker de sorte que je puisse me concentrer sur ça. Je ne sais pas quoi vraiment interagir avec ce. Encore une fois, désolé si je suis de vous déranger.
OriginalL'auteur Barak
Je sais que cette question est à moi, et a déjà une réponse. Mais je pensais que je voudrais ajouter ma propre réponse à d'autres personnes qui cherchent de l'aide sur cette même question. J'ai simplifié le code de l'exemple que j'ai fourni ci-dessus en 2 classes seulement. Kbeal, qui a été assez aimable pour fournir le tutoriel a fait un excellent travail, mais il était trop gonflé avec de l'information qui n'était même pas nécessaire. Donc, en utilisant ce que je savais sur les dialogues et ce que j'ai appris de ce que j'ai pu comprendre à partir de la Kbeal du tutoriel ainsi que les recherches que j'ai fait sur des fragments, j'ai donné mon de la mise en œuvre d'un DatePickerDialog sur mon GitHub.
https://github.com/Zeroe31890/DateDialogFragment
Tous franchement, vous vous avez à faire est de l'exécuter directement après seulement copier et coller les 2 classes, la mise en page unique, et modifiant le fichier Manifeste Android. Beaucoup plus facile que tous les autres tutoriels. Oh, et si quelqu'un voit quelque chose qui peut être fait de mieux sur s'il vous plaît. Profitez-en!
C'est venu plus près à travailler sur une rotation de l'écran que n'importe quel autre exemple que j'ai trouvé (la plupart s'est écrasé au lieu de simplement le défaut de mise à jour de la convocation de l'activité avec la valeur). Le coût de la fexibilité j'ai été capable de le faire fonctionner pour mes fins en passant l'id du bouton au lieu d'un rappel et aide
getActivity.findViewById()
dansonDateSet()
pour obtenir le bouton de manière à ce que je pourrais appelersetText()
OriginalL'auteur Andy
Auteur du post ici: on dirait que vous avez tout compris. J'ai répondu à vos questions sur mon post avant de trouver ce que Barak fait un excellent travail de leur répondre. Si vous ne l'avez pas déjà fait, téléchargez le source complet de l'application exemple. Je pense que ça va aider à combler le manque des espaces toujours.
Donc j'ai finalement eu la chance de prendre un coup d'oeil. Je ne vois pourquoi je suis confus. Et je suis vraiment de mieux en mieux, mais je n'ai jamais utilisé des fragments, et comment le DatePicker s'inscrit dans l'ensemble c'est maintenant confus en moi plus lol. Je vais continuer à tremper dans et qu'il dissection pour faire plus de sens de ce que j'ai besoin de l'apprendre, mais si vous avez une chance de m'envoyer un email, que je fournis sur votre blog et de m'aider à sortir de manière plus approfondie, ce serait formidable. Si pas, je comprends parfaitement, et je suis reconnaissant pour le poste de commencer avec ce qui a beaucoup aidé. Avoir un grand jour.
OriginalL'auteur kbeal