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
TextView
que mostrará la fecha y unbotón
que 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_ID
es 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 delcalendario
y 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
OnDateSetListener
mé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