Android - Sélecteur de date

Android Date Picker vous permet de sélectionner la date composée du jour, du mois et de l'année dans votre interface utilisateur personnalisée. Pour cette fonctionnalité, Android fournit des composants DatePicker et DatePickerDialog.

Dans ce didacticiel, nous allons démontrer l'utilisation de Date Picker via DatePickerDialog. DatePickerDialog est une boîte de dialogue simple contenant DatePicker.

Pour afficher DatePickerDialog, vous devez transmettre l'id DatePickerDialog à la méthode showDialog (id_of_dialog) . Sa syntaxe est donnée ci-dessous -

showDialog(999);

Lors de l'appel de cette méthode showDialog , une autre méthode appelée onCreateDialog est automatiquement appelée. Nous devons donc également remplacer cette méthode. Sa syntaxe est donnée ci-dessous -

@Override
protected Dialog onCreateDialog(int id) {
   // TODO Auto-generated method stub
   if (id == 999) {
      return new DatePickerDialog(this, myDateListener, year, month, day);
   }
   return null;
}

Dans la dernière étape, vous devez enregistrer l'écouteur DatePickerDialog et remplacer sa méthode onDateSet. Cette méthode onDateSet contient le jour, le mois et l'année mis à jour. Sa syntaxe est donnée ci-dessous -

private DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() {
   @Override
   public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
      // arg1 = year
      // arg2 = month
      // arg3 = day		
   }
};

Outre les attributs de date du formulaire, l'objet DatePicker est également passé dans cette fonction. Vous pouvez utiliser les méthodes suivantes du DatePicker pour effectuer d'autres opérations.

Sr.Non Méthode et description
1

getDayOfMonth()

Cette méthode obtient le jour du mois sélectionné

2

getMonth()

Cette méthode obtient le mois sélectionné

3

getYear()

Cette méthode obtient l'année sélectionnée

4

setMaxDate(long maxDate)

Cette méthode définit la date maximale prise en charge par ce DatePicker en millisecondes depuis le 1er janvier 1970 00:00:00 dans le fuseau horaire getDefault ()

5

setMinDate(long minDate)

Cette méthode définit la date minimale prise en charge par ce NumberPicker en millisecondes depuis le 1er janvier 1970 00:00:00 dans le fuseau horaire getDefault ()

6

setSpinnersShown(boolean shown)

Cette méthode définit si les flèches sont affichées

sept

updateDate(int year, int month, int dayOfMonth)

Cette méthode met à jour la date actuelle

8

getCalendarView()

Cette méthode renvoie la vue du calendrier

9

getFirstDayOfWeek()

Cette méthode renvoie le premier jour de la semaine

Exemple

Voici un exemple illustrant l'utilisation de la classe DatePickerDialog. Il crée une application de base de sélecteur de date qui vous permet de définir la date à l'aide du widget DatePicker

Pour expérimenter cet exemple, vous pouvez l'exécuter sur un appareil réel ou dans un émulateur.

Pas La description
1 Vous utiliserez Android studio pour créer une application Android et la nommerez comme DatePicker sous un package com.example.datepicker.
2 Modifiez le fichier src / MainActivity.java pour ajouter le code nécessaire.
3 Modifiez le res / layout / activity_main pour ajouter les composants XML respectifs.
4 Modifiez le fichier res / values ​​/ string.xml pour ajouter les composants de chaîne nécessaires.
5 Exécutez l'application et choisissez un appareil Android en cours d'exécution, installez l'application dessus et vérifiez les résultats.

Voici le contenu du fichier d'activité principal modifié src/com.example.datepicker/MainActivity.java.

package com.example.datepicker;

import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;

import android.os.Bundle;

import android.view.Menu;
import android.view.View;

import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
   private DatePicker datePicker;
   private Calendar calendar;
   private TextView dateView;
   private int year, month, day;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      dateView = (TextView) findViewById(R.id.textView3);
      calendar = Calendar.getInstance();
      year = calendar.get(Calendar.YEAR);
      
      month = calendar.get(Calendar.MONTH);
      day = calendar.get(Calendar.DAY_OF_MONTH);
      showDate(year, month+1, day);
   }

   @SuppressWarnings("deprecation")
   public void setDate(View view) {
      showDialog(999);
      Toast.makeText(getApplicationContext(), "ca", 
         Toast.LENGTH_SHORT)
      .show();
   }

   @Override
   protected Dialog onCreateDialog(int id) {
      // TODO Auto-generated method stub
      if (id == 999) {
         return new DatePickerDialog(this, 
            myDateListener, year, month, day);
      }
      return null;
   }

   private DatePickerDialog.OnDateSetListener myDateListener = new 
      DatePickerDialog.OnDateSetListener() {
      @Override
      public void onDateSet(DatePicker arg0, 
         int arg1, int arg2, int arg3) {
         // TODO Auto-generated method stub
         // arg1 = year
         // arg2 = month
         // arg3 = day
         showDate(arg1, arg2+1, arg3);
      }
   };

   private void showDate(int year, int month, int day) {
      dateView.setText(new StringBuilder().append(day).append("/")
      .append(month).append("/").append(year));
   }
}

Voici le contenu modifié du xml res/layout/activity_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingBottom="@dimen/activity_vertical_margin"
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   tools:context=".MainActivity" >

   <Button
      android:id="@+id/button1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="70dp"
      android:onClick="setDate"
      android:text="@string/date_button_set" />

   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="24dp"
      android:text="@string/date_label_set"
      android:textAppearance="?android:attr/textAppearanceMedium" />

   <TextView
      android:id="@+id/textView2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_below="@+id/button1"
      android:layout_marginTop="66dp"
      android:layout_toLeftOf="@+id/button1"
      android:text="@string/date_view_set"
      android:textAppearance="?android:attr/textAppearanceMedium" />

   <TextView
      android:id="@+id/textView3"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignRight="@+id/button1"
      android:layout_below="@+id/textView2"
      android:layout_marginTop="72dp"
      android:text="@string/date_selected"
      android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

Voici le contenu de la res/values/string.xml.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">DatePicker</string>
   <string name="action_settings">Settings</string>
   <string name="hello_world">Hello world!</string>
   <string name="date_label_set">Press the button to set the date</string>
   <string name="date_button_set">Set Date</string>
   <string name="date_view_set">The Date is: </string>
   <string name="date_selected"></string>
</resources>

Essayons d'exécuter notre application DatePicker que nous venons de modifier. Je suppose que vous avez créé votreAVDlors de la configuration de l'environnement. Pour exécuter l'application à partir d'Eclipse, ouvrez l'un des fichiers d'activité de votre projet et cliquez sur l' icône Exécuter dans la barre d'outils. Eclipse installe l'application sur votre AVD et la démarre et si tout va bien avec votre configuration et votre application, elle affichera la fenêtre Emulator suivante -

Vous pouvez maintenant voir que la date a déjà été définie sur l'étiquette du bas. Maintenant, nous allons changer la date via DatePickerDialog en appuyant sur le bouton Set Date. En appuyant sur le bouton, l'écran suivant apparaît.

Réglez maintenant la date souhaitée et, après avoir réglé la date, appuyez sur le bouton Terminé. Cette boîte de dialogue disparaîtra et votre date nouvellement réglée commencera à s'afficher à l'écran. Ceci est illustré ci-dessous.