IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Comment avoir deux boutons de gestion de la date/heure avec mon code


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Par défaut Comment avoir deux boutons de gestion de la date/heure avec mon code
    Bonjour,

    Je me pose une question au niveau de mon code pour la gestion des deux boutons qui affiche la date de début et l'autre la date de fin

    J'ai implémenté ma class de "DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener"

    puis j'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     button_DD.setOnClickListener( new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Calendar c = Calendar.getInstance();
                    year = c.get(Calendar.YEAR);
                    month = c.get(Calendar.MONTH);
                    day = c.get(Calendar.DAY_OF_MONTH);
     
                    DatePickerDialog datePickerDialog = new DatePickerDialog( CreatActivity.this, CreatActivity.this, year, month, day);
                    datePickerDialog.show();
                     }
            });
            button_DF.setOnClickListener( new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Calendar c = Calendar.getInstance();
                    year = c.get(Calendar.YEAR);
                    month = c.get(Calendar.MONTH);
                    day = c.get(Calendar.DAY_OF_MONTH);
     
                    DatePickerDialog datePickerDialog = new DatePickerDialog( CreatActivity.this, CreatActivity.this, year, month, day);
                    datePickerDialog.show();
                }
            } );
    et ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
            yearFinal = i;
            monthFinal = i1 + 1;
            dayFinal = i2;
     
            Calendar c = Calendar.getInstance();
            hour = c.get(Calendar.HOUR_OF_DAY);
            minute = c.get(Calendar.MINUTE);
            TimePickerDialog timePickerDialog = new TimePickerDialog( CreatActivity.this, CreatActivity.this, hour, minute, DateFormat.is24HourFormat(this) );
            timePickerDialog.show();
        }
        @Override
        public void onTimeSet(TimePicker timePicker, int i, int i1) {
            hourFinal = i;
            minuteFinal = i1;
            TvDateDeb.setText( yearFinal + "-" + monthFinal + "-" + dayFinal + " " + hourFinal + ":" + minuteFinal);
            TvDateFin.setText( yearFinal + "-" + monthFinal + "-" + dayFinal + " " + hourFinal + ":" + minuteFinal);
            }
    Le truc c'est que (et ces normal je comprends pourquoi) il m'affiche la même date sur TvDateDeb et TvDateFin, je vois pas comment je dois faire pour le faire bien

    Je suis un peu perdu, je m'en excuse par avance

    et merci aussi

    Merci

  2. #2
    Membre chevronné Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Par défaut
    Citation Envoyé par Myogtha Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            TvDateDeb.setText( yearFinal + "-" + monthFinal + "-" + dayFinal + " " + hourFinal + ":" + minuteFinal);
            TvDateFin.setText( yearFinal + "-" + monthFinal + "-" + dayFinal + " " + hourFinal + ":" + minuteFinal);
    Le truc c'est que (et ces normal je comprends pourquoi) il m'affiche la même date sur TvDateDeb et TvDateFin
    C'est normal qu'il t'affiche la même valeur puisque tu lui affecte la même valeur.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Par défaut
    oui j'ai vu ça mais, il faut forcement que je doublonne toute les int ?

    En fait j'avais surtout l'impression que mon script était pas bon dans la conception, si c'est bon je vais voir en doublonnant les int

  4. #4
    Membre chevronné Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Par défaut
    Ce n'est pas la façon recommandée de faire. Si tu suis la documentation Android, tu dois creer des dialogs fragment pour tes TimePicker et tes DatePicker.
    Et je dis "des" car comme tu ne fais pas la même chose des données (tu ne les affiches pas au même endroit), il t'est conseillé de faire des TimePicker/DatePicker différent pour la date de début et la date de fin.

    Autre alternative pour ne pas faire 2 objets DatePicker (respectivement TimePicker). Tu définis 2 constantes dans ton objet qui serviront de tags. Puis dans ta fonction onTImeSet tu regarde dans quel cas tu te trouve grace au tag. Si dans le cas de la date du début tu affecte le TextView correspondant. Enfin tu défini dans quel cas tu te trouve en utilisant le tag lorsque tu lance le fragment pour afficher le DatePicker.

    Ton fragment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    public static class DatePickerFragment extends DialogFragment
                                implements DatePickerDialog.OnDateSetListener {
     
         public static final String DATE_DEBUT = "datedebut";
         public static final String DATE_FIN = "datefin";
     
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // Use the current date as the default date in the picker
            final Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DAY_OF_MONTH);
     
            // Create a new instance of DatePickerDialog and return it
            return new DatePickerDialog(getActivity(), this, year, month, day);
        }
     
        public void onDateSet(DatePicker view, int year, int month, int day) {
            if(this.getTag() == DATE_DEBUT ) {
                   TvDateDeb.setText( year + "-" + month + "-" + day);
            } else if ( this.getTag() == DATE_Fin) {
                   TvDateFin.setText( year + "-" + month + "-" + day);
            }
        }
    }
    Ton OnClick
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     button_DD.setOnClickListener( new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    DialogFragment newFragment = new DatePickerFragment();
                    newFragment.show(getSupportFragmentManager(), DatePickerFragment.DATE_DEBUT);
                    }
            });
    button_DF.setOnClickListener( new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    DialogFragment newFragment = new DatePickerFragment();
                    newFragment.show(getSupportFragmentManager(), DatePickerFragment.DATE_FIN);
                }
           });

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2018
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2018
    Messages : 63
    Par défaut
    Citation Envoyé par Myogtha Voir le message
    Bonjour,

    Je me pose une question au niveau de mon code pour la gestion des deux boutons qui affiche la date de début et l'autre la date de fin

    J'ai implémenté ma class de "DatePickerDialog.OnDateSetListener, TimePickerDialog.OnTimeSetListener"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            yearFinal = i;
            monthFinal = i1 + 1;
            dayFinal = i2;
    En plus tu attribues des valeurs à tes variables globales pour définir deux dates différentes,
    Pour palier le problème créer par exemple yearDateFin et yearDateDebut ... tu y stockeras des données que tu n'écraseras pas !

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 328
    Par défaut
    Kamender :

    J'ai essayé ta proposition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    button_DD.setOnClickListener( new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Calendar c = Calendar.getInstance();
                    year1 = c.get(Calendar.YEAR);
                    month1 = c.get(Calendar.MONTH);
                    day1 = c.get(Calendar.DAY_OF_MONTH);
     
                    DatePickerDialog datePickerDialog = new DatePickerDialog( CreatActivity.this, CreatActivity.this, year1, month1, day1);
                    datePickerDialog.show();
                     }
            });
            button_DF.setOnClickListener( new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Calendar c = Calendar.getInstance();
                    year2 = c.get(Calendar.YEAR);
                    month2 = c.get(Calendar.MONTH);
                    day2 = c.get(Calendar.DAY_OF_MONTH);
     
                    DatePickerDialog datePickerDialog = new DatePickerDialog( CreatActivity.this, CreatActivity.this, year2, month2, day2);
                    datePickerDialog.show();
                }
            } );
    et coté date/time

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    @Override
        public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
     
            yearDateFin = i;
            yearDateDebut = i;
            monthDateDebut = i1 + 1;
            monthDateFin = i1 + 1;
            dayDateDebut = i2;
            dayDateFin = i2;
     
            Calendar c = Calendar.getInstance();
            hour1 = c.get(Calendar.HOUR_OF_DAY);
            hour2 = c.get(Calendar.HOUR_OF_DAY);
            minute1 = c.get(Calendar.MINUTE);
            minute2 = c.get(Calendar.MINUTE);
            TimePickerDialog timePickerDialog = new TimePickerDialog( CreatActivity.this, CreatActivity.this, hour1, minute2, DateFormat.is24HourFormat(this) );
            timePickerDialog.show();
        }
        @Override
        public void onTimeSet(TimePicker timePicker, int i, int i1) {
     
            hourDateFin = i;
            hourDateDebut = i;
            minuteDateFin = i1;
            minuteDateDebut = i1;
     
            TvDateDeb.setText( yearDateDebut + "-" + monthDateDebut + "-" + dayDateDebut + " " + hourDateDebut + ":" + minuteDateDebut);
            TvDateFin.setText( yearDateFin + "-" + monthDateFin + "-" + dayDateFin + " " + hourDateFin + ":" + minuteDateFin);
            }
    mais ça marche pas, ils ont les même dates...

  7. #7
    Membre chevronné Avatar de Drowan
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2014
    Messages : 460
    Par défaut
    Ils ont les même dates car tu affectes les mêmes valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    heureDebut = i;
    heureFin = i;
    Il faut que tu affecte des heures différentes

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/11/2013, 19h36
  2. [HTML 5] Comment avoir deux bouton sumbit qui envoie le formulaire dans 2 pages différentes
    Par pierrot10 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 09/03/2010, 06h54
  3. Réponses: 8
    Dernier message: 02/11/2007, 07h24
  4. Comment avoir un bouton bistable ?
    Par declencher dans le forum Composants VCL
    Réponses: 4
    Dernier message: 02/10/2005, 11h33
  5. [Scripts] Comment avoir les boutons style XP
    Par Didier69 dans le forum Général Dotnet
    Réponses: 26
    Dernier message: 18/05/2005, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo