Diseño de Interfaz de Usuario Android: Trabajando con Diálogos de Selección de Fecha
Spanish (Español) translation by Rodney Martinez (you can also view the original English article)
Los formatos de información de fecha de las personas en una variedad de formas y esto hacer que la recopilación de información de fechas de parte de los usuarios se un poco peligrosa. La mejor forma de garantizar datos validos es por medio de un control que consolida ciertas reglas sobre como una fecha está formateada. Una forma de hacer esto es usando un diálogo de fecha especial para recopilar entradas.
Los diálogos de fecha, tales como el que se muestra a continuación, son generados desde una clase especial AlertDialog llamada DatePickerDialog (android.app.DatePickerDialog). Asimismo, para tener todas las características de la clase AlertDialog, usted puede usar el DatePickerDialog, para recopilar ingresos de fechas estándar de parte de los usuarios. En este tutorial, vamos a proporcionar los pasos que se requieren para implementar un diálogo selector de fecha para recopilar una fecha (tal como un cumple años) de parte de los usuarios.


Pre-requisitos: Conceptos básicos de Diálogos
Ya hemos discutido como añadir controles básicos dialog a sus clases Activity. Este tutorial se basa en su conocimiento del tutorial: Diseño de Interfaz de Usuario Android: Trabajando con Dialogs. Usted puede agregar este dialog al dialog de la aplicación de muestra proporcionado en el tutorial mencionado anteriormente o crear su propia aplicación.
Paso 1: Definiendo un Nuevo Selector Fecha Dialog
Ahora vamos añadir otro Dialog nuevo a su clase Activity.
Edite su clase Activity en Java y añada las siguientes variables:
1 |
|
2 |
private static final int MY_DATE_DIALOG_ID = 3; |
Este código define un identificador Diaglo único para nuestra clase Activity. El valor es arbitrario, pero necesita ser único dentro del Activity.
Paso 2: Creando el DatePickerDialog
Para crear instancias Dialog, debe proporcionar un argumento para su DatePickerDialog en el método onCreateDialog() de su clase Activity. Cuando el método showDialog() es llamado, éste activa un llamado a este método, que debe devolver la instancia Dialog adecuada. En el código de ejemplo tenemos tres diferentes Dialogs en nuestra clase y, por tanto, necesitaremos revisar el identificador Dialog entrante para devolver el Dialog del tipo apropiado.
La declaración argumento específica para su nuevo DatePickerDialog dentro del método onCreateDialog() se muestra aquí:
1 |
|
2 |
case MY_DATE_DIALOG_ID: |
3 |
DatePickerDialog dateDlg = new DatePickerDialog(this, |
4 |
new DatePickerDialog.OnDateSetListener() { |
5 |
|
6 |
public void onDateSet(DatePicker view, int year, |
7 |
int monthOfYear, int dayOfMonth) |
8 |
{
|
9 |
Time chosenDate = new Time(); |
10 |
chosenDate.set(dayOfMonth, monthOfYear, year); |
11 |
long dtDob = chosenDate.toMillis(true); |
12 |
CharSequence strDate = DateFormat.format("MMMM dd, yyyy", dtDob); |
13 |
Toast.makeText(SuperSimpleDialogsActivity.this, |
14 |
"Date picked: " + strDate, Toast.LENGTH_SHORT).show(); |
15 |
}}, 2011,0, 1); |
16 |
|
17 |
dateDlg.setMessage("When's Your Birthday?"); |
18 |
return dateDlg; |
Aquí creamos una nueva instancia de un DatePickerDialog, configúrelo y devuélvalo. La configuración es sencilla. Incluimos una implementación del método onDateSet(), que es llamado cuando el usuario selecciona una fecha específica y presiona el botón de diálogo positivo. También, configuramos un mensaje dialog para pedirle al usuario su fecha de nacimiento.
Nota: Usamos la clase Time (android.text.format.Time) y la clase DateFormat (android.text.format.DateFormat) para convertir entre los formatos de fecha de máquina y humanos.
Paso 3: Inicializando el DatePickerDialog
Recuerde que un Activity conserva Dialogs y los vuelve a usar cuando sean presentados. Debido que queremos inicializar el DatePickerDialog para la fecha de hoy, deberíamos inicializarlo en el método onPrepareDialog() del Activity. En caso contrario, la segunda vez que ejecute el DatePickerDialog, será ajustada la fecha que escogió la vez anterior. Ahora, vamos a suponer que queremos volver a usar este dialog, por lo tanto, queremos reiniciar la fecha actual cada vez que el dialog es presentado. Para hacer esto, debemos actualizar el método onPrepareDialog() del Activity. Aquí está la declaración de argumento para el DatePickerDialog específico dentro de este método:
1 |
|
2 |
case MY_DATE_DIALOG_ID: |
3 |
DatePickerDialog dateDlg = (DatePickerDialog) dialog; |
4 |
int iDay,iMonth,iYear; |
5 |
|
6 |
Calendar cal = Calendar.getInstance(); |
7 |
iDay = cal.get(Calendar.DAY_OF_MONTH); |
8 |
iMonth = cal.get(Calendar.MONTH); |
9 |
iYear = cal.get(Calendar.YEAR); |
10 |
dateDlg.updateDate(iYear, iMonth, iDay); |
11 |
|
12 |
break; |
Aquí usamos la clase Calendar (java.util.Calendar) para ajustar el control DatePickerDialog para la fecha de hoy cada vez que el dialog se muestra con el método updateDate(). Observe que el valor del mes es un número con base 0 (por ejemplo, el mes de Octubre sería el mes 9, no el 10).
Paso 4: Activando el DatePickerDialog
Finalmente, usted está listo para activar su DatePickerDialog para mostrarlo cuando sea requerido. Por ejemplo, usted podría añadir otro control Button a la pantalla de su Activity para activar su DatePickerDialog y mostrarlo. Su controlador de clic podría ser algo así:
1 |
|
2 |
public void onDateDialogButtonClick(View v) { |
3 |
showDialog(MY_DATE_DIALOG_ID); |
4 |
}
|
En conclusión
Los Dialogs son una herramienta potente en la interfaz de usuario que pueden ayudar a mantener su aplicación de interfaz de usuario flexible y ordenada. Los DatePickerDialogs, son útiles, especialmente, para recopilar ingresos de fechas de parte de los usuarios en una forma reproducible y estándar. Un DatePickerDialog es un tipo especial de AlertDialog con todas sus características.
Sobre los Autores
Desarrolladores de Celulares; Lauren Darcey y Shane Conder son coautores de varios libros sobre el desarrollo en Android: un libro de programación a fondo titulado: Desarrollo de Aplicaciones Inalámbricas de Android y Sams Aprenda usted mismo a Desarrollar Aplicaciones para Android en 24 horas, segunda edición. Cuando no escriben, ellos pasan su tiempo desarrollando programas para celulares en sus empresas y proporcionando servicios de consultoría. Pueden ser localizado a través de correo electrónico: androidwirelessdev+mt@gmail.com o por medio de su blog en androidbook.blogspot.com y en Twitter @androidwireless.






