Android: selector de fecha

El selector de fecha de Android le permite seleccionar la fecha que consta de día, mes y año en su interfaz de usuario personalizada. Para esta funcionalidad, Android proporciona los componentes DatePicker y DatePickerDialog.

En este tutorial, vamos a demostrar el uso del selector de fechas a través de DatePickerDialog. DatePickerDialog es un diálogo simple que contiene DatePicker.

Para mostrar DatePickerDialog, debe pasar la identificación de DatePickerDialog al método showDialog (id_of_dialog) . Su sintaxis se da a continuación:

showDialog(999);

Al llamar a este método showDialog , se llama automáticamente a otro método llamado onCreateDialog . Así que también tenemos que anular ese método. Su sintaxis se da a continuación:

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

En el último paso, debe registrar el oyente DatePickerDialog y anular su método onDateSet. Este método onDateSet contiene el día, mes y año actualizados. Su sintaxis se da a continuación:

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		
   }
};

Aparte de los atributos de fecha de formulario, el objeto DatePicker también se pasa a esta función. Puede utilizar los siguientes métodos de DatePicker para realizar más operaciones.

No Señor Método y descripción
1

getDayOfMonth()

Este método obtiene el día del mes seleccionado

2

getMonth()

Este método obtiene el mes seleccionado

3

getYear()

Este método obtiene el año seleccionado

4

setMaxDate(long maxDate)

Este método establece la fecha máxima admitida por este DatePicker en milisegundos desde el 1 de enero de 1970 a las 00:00:00 en la zona horaria getDefault ()

5

setMinDate(long minDate)

Este método establece la fecha mínima admitida por este NumberPicker en milisegundos desde el 1 de enero de 1970 a las 00:00:00 en la zona horaria getDefault ()

6

setSpinnersShown(boolean shown)

Este método establece si se muestran los hilanderos

7

updateDate(int year, int month, int dayOfMonth)

Este método actualiza la fecha actual

8

getCalendarView()

Este método devuelve la vista de calendario

9

getFirstDayOfWeek()

Este método devuelve el primer día de la semana

Ejemplo

Aquí hay un ejemplo que demuestra el uso de la clase DatePickerDialog. Crea una aplicación de selector de fecha básica que le permite configurar la fecha usando el widget DatePicker

Para experimentar con este ejemplo, puede ejecutarlo en un dispositivo real o en un emulador.

Pasos Descripción
1 Utilizará Android Studio para crear una aplicación de Android y nombrarla como DatePicker en un paquete com.example.datepicker.
2 Modifique el archivo src / MainActivity.java para agregar el código necesario.
3 Modifique res / layout / activity_main para agregar los componentes XML respectivos.
4 Modifique res / values ​​/ string.xml para agregar los componentes de cadena necesarios.
5 Ejecute la aplicación y elija un dispositivo Android en ejecución e instale la aplicación en él y verifique los resultados.

A continuación se muestra el contenido del archivo de actividad principal modificado 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));
   }
}

A continuación se muestra el contenido modificado del 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>

A continuación se muestra el contenido 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>

Intentemos ejecutar nuestra aplicación DatePicker que acabamos de modificar. Supongo que habías creado tuAVDmientras realiza la configuración del entorno. Para ejecutar la aplicación desde Eclipse, abra uno de los archivos de actividad de su proyecto y haga clic en el icono Ejecutar en la barra de herramientas. Eclipse instala la aplicación en su AVD y la inicia y si todo está bien con su configuración y aplicación, se mostrará la siguiente ventana del Emulador:

Ahora puede ver que la fecha ya se ha establecido en la etiqueta inferior. Ahora cambiaremos la fecha a través de DatePickerDialog presionando el botón Establecer fecha. Al presionar el botón aparecerá la siguiente pantalla.

Ahora configure la fecha requerida y, después de configurar la fecha, presione el botón Listo. Este cuadro de diálogo desaparecerá y la fecha recién configurada comenzará a mostrarse en la pantalla. Esto se muestra a continuación.