A DatePicker es un widget que permite al usuario seleccionar un mes, día y año.
- Inicie un nuevo proyecto / actividad llamada HelloDatePicker.
- Abra el archivo de diseño y hacer que de este modo:
<? xml
la fecha " />
</ LinearLayout>Para la disposición, estamos usando un LinearLayout vertical, con una
TextViewque mostrará la fecha y unbotónque iniciará el cuadro de diálogo Selector de fechas. Con esta disposición, la TextView se sentará sobre el botón. El valor del texto en la Vista de Texto se encuentra vacío, ya que se llenará con la fecha actual en que nuestra actividad se ejecuta. - Abrir HelloDatePicker.java. Inserte el siguiente a la clase HelloDatePicker:
Ver captura de nuestros
añadir un detector haga clic en el
obtener la corriente
mostrar la fecha actual
updateDisplay ();
}Sugerencia: Pulse la tecla Ctrl (o Cmd) + Shift + O para importar todos los paquetes necesarios.
Empezamos por crear instancias de las variables para nuestros puntos de vista y los campos de fecha. El
DATE_DIALOG_IDes un entero estático que identifica el cuadro de diálogo. En elonCreate ()método, nos preparamos mediante el establecimiento de la distribución y captura de los elementos de la vista. Entonces se crea una escucha on-clic del botón, de modo que cuando se hace clic se mostrará nuestro diálogo DatePicker. ElShowDialog ()método que aparezca el diálogo de selección de fecha al llamar alonCreateDialog ()el método de devolución de llamada (que definiremos en la próxima sección). A continuación, crear una instancia delcalendarioy obtener el año en curso, mes y día. Finalmente, hacemos un llamadoupdateDisplay ()-un método propio (que se define más adelante) que llenará el TextView. - Después de la
onCreate ()método, agregue elonCreateDialog ()el método de devolución de llamada (que es llamado porShowDialog ())@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this,
mDateSetListener,
mYear, mMonth, mDay);
}
return null;
}Este método se le pasa el identificador que le dio
ShowDialog ()y se inicializa el DatePicker a la fecha se recuperaron a partir de nuestra instancia de Calendar. - A continuación, agregue el
updateDisplay ()método:/ / Actualiza la fecha en que se muestran en la TextView
privada vacío updateDisplay () {
mDateDisplay . setText (
nuevo StringBuilder ()
/ / Mes 0 es base para añadir una
. anexar ( mMonth + 1 ). anexar ( "-" )
. agregar ( mday .) añadir ( "-" )
. anexar ( mYear .) añadir ( "" ));
}Este sistema utiliza los valores de fecha miembro de escribir la fecha en nuestro TextView.
- Por último, añadir un oyente que se llamará cuando el usuario establece una nueva fecha:
/ / La devolución de llamada cuando el usuario "sets" de la fecha en la
Este
OnDateSetListenermétodo de escucha para cuando el usuario se ha terminado de definir la fecha (hace clic en el botón "Set"). En ese momento, el fuego y ponemos al día nuestros campos miembros del cambio de fecha definido por el usuario y actualizar nuestra TextView llamandoupdateDisplay (). - Ahora lo ejecutamos.
Al pulsar el botón "Cambiar la fecha", usted debería ver lo siguiente:
Main.xml
<? xml version = "1.0" codificación = "UTF-8" ?>
< LinearLayout xmlns: android = " Http: / / Schemas.android.com / Apk / Res / Android "
android: Layout_Width = "Wrap_Content"
android: Layout_Height = "Wrap_Content"
android: orientación = "vertical" >
< TextView android: id = "@ + id / Datedisplay"
android: Layout_Width = "Wrap_Content"
android: Layout_Height = "Wrap_Content"
android: texto = "" />
< Botón de android: id = "@ + id / Pickdate"
android: Layout_Width = "Wrap_Content"
android: Layout_Height = "Wrap_Content"
android: texto = "El cambio de la fecha" />
< Botón de android: id = "@ + id / Picktime"
android: Layout_Width = "Wrap_Content"
android: Layout_Height = "Wrap_Content"
android: texto = "Cambiar la hora" />
</ LinearLayout >
HelloDatePicker.java
Paquete com.example.hellodatepicker;
importación java.util.Calendar;
importación android.app.Activity;
importación android.app.DatePickerDialog;
la importación android.app.Dialog;
importación android.app.TimePickerDialog;
importación android.os.Bundle;
importación android.view.View;
importación android.widget.Button;
importación android.widget.DatePicker;
importación android.widget.TextView;
importación android.widget.TimePicker;
público de clase HelloDatePicker extiende Actividad {
/ ** Se le llama cuando la actividad se creó por primera vez. * /
privado mDateDisplay TextView;
privado mPickDate Button;
privado mPickTime Button;
privada int mYear;
privada int mMonth;
privada int mday;
privada int mHour;
privada int mMinute;
estáticas finales int DATE_DIALOG_ID = 0 ;
estáticas finales int TIME_DIALOG_ID = 1 ;
@ Override
público vacío onCreate (paquete savedInstanceState) {
súper . onCreate (savedInstanceState);
setContentView (R.layout.main);
/ / Captura de nuestros elementos de la vista
mDateDisplay = (TextView) findViewById (R.id.dateDisplay);
mPickDate = (Button) findViewById (R.id.pickDate);
mPickTime = (Button) findViewById (R.id.pickTime)
/ / Añadir un oyente haga clic en el botón
mPickDate.setOnClickListener ( nuevo View.OnClickListener () {
público vacío onClick (Ver v) {showDialog (DATE_DIALOG_ID);}
});
mPickTime.setOnClickListener ( nuevo View.OnClickListener () {
público vacío onClick (Ver v) {showDialog (TIME_DIALOG_ID);}
});
/ / Obtener la fecha actual
finales Calendario c = Calendar.getInstance ();
mYear = c.get (Calendar.YEAR);
mMonth = c.get (Calendar.MONTH);
mday = c.get (Calendar.DAY_OF_MONTH);
mHour = c.get (Calendar.HOUR_OF_DAY);
mMinute = c.get (Calendar.MINUTE);
/ / Mostrar la fecha actual
updateDisplay ();
}
@ Override
protegidos de diálogo onCreateDialog ( int id) {
switch (id) {
caso DATE_DIALOG_ID:
volver nueva DatePickerDialog ( este mDateSetListener, mYear, mMonth, mday);
caso TIME_DIALOG_ID:
volver nueva TimePickerDialog ( este mTimeSetListener, mHour, mMinute, falso );
}
retorno nulo ;
}
privadas sin efecto updateDisplay () {
mDateDisplay.setText (
nuevo StringBuilder ()
/ / Mes es de 0 base por lo que añadir una
. Append (mMonth + 1 ). append ( "-" )
.. Append (mday) append ( "-" )
. Append (mYear). Append ( "" )
.. Append (pad (mHour)) append ( ":" )
. Append (pad (mMinute)));
}
/ / La devolución de llamada cuando el usuario "sets" de la fecha en el cuadro de diálogo
privado mDateSetListener DatePickerDialog.OnDateSetListener =
nueva DatePickerDialog.OnDateSetListener () {
público vacío onDateSet (ver DatePicker, int año, int monthOfYear, int DAYOFMONTH) {
mYear = año;
mMonth = monthOfYear;
mday = DAYOFMONTH;
updateDisplay ();
}
};
privado mTimeSetListener TimePickerDialog.OnTimeSetListener =
nueva TimePickerDialog.OnTimeSetListener () {
público vacío onTimeSet (TimePicker punto de vista, int hourOfDay, int minuto) {
mHour = hourOfDay;
mMinute = minutos;
updateDisplay ();
}
};
privada estática pad de cuerdas ( int c) {
si (c> = 10 )
volver String.valueOf (c)
más
retorno "0" + String.valueOf (c);
}
}
al menos date el tiempo de traducir mejor, no es solo copy n paste.
ResponderEliminar