Android DatePicker es un control de interfaz de usuario que se utiliza para seleccionar la fecha por día, mes y año en la aplicación de Android . DatePicker se utiliza para garantizar que los usuarios seleccionen una fecha válida. En Android DatePicker tiene dos modos, el primero muestra el calendario completo y el segundo muestra las fechas en la vista giratoria. Se puede crear un control DatePicker de dos maneras, ya sea manualmente en el archivo XML o crearlo en el archivo de actividad mediante programación. Lo haremos programáticamente usando Java .
Nota: Para implementar DatePicker usando Kotlin , consulte este .
Acercarse
Paso 1: Crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.
Paso 2: trabajar con el archivo activity_main.xml
En el archivo activity_main.xml agregue solo un TextView para mostrar la fecha seleccionada y un Button para seleccionar la fecha del DatePickerDialog . A continuación se muestra el código completo para el archivo activity_main.xml .
XML
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
RelativeLayout
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
tools:context
=
".MainActivity"
>
<
TextView
android:id
=
"@+id/tvDate"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_centerInParent
=
"true"
android:text
=
"Date"
/>
<
Button
android:id
=
"@+id/btPickDate"
android:layout_width
=
"wrap_content"
android:layout_height
=
"wrap_content"
android:layout_below
=
"@+id/tvDate"
android:layout_centerInParent
=
"true"
android:text
=
"Pick Date"
/>
</
RelativeLayout
>
Paso 3: Cree una nueva clase y nombres como DatePicker
Ahora cree una nueva clase yendo al paquete y haga clic derecho sobre él y seleccione nuevo y luego Clase Java. Nombre la clase como DatePicker y su superclase como DialogFragment (androidx.fragment.app.DialogFragment) y haga clic en Aceptar.
Ahora anule un método onCreateDialog y, en lugar de devolver super.onCreateDialog, devuelva una instancia de DatePickerDialog .
@NonNull
@Anular
Cuadro de diálogo público onCreateDialog(@Paquete anulable guardadoInstanceState) {
devolver nuevo DatePickerDialog();
}
Ahora pase parámetros al constructor de DatePickerDialog que requiere contexto, OnDateSetListener, año, mes, día del mes.
- Pase el método getActivity para el contexto.
- Para OnDateSetListener, escriba el método getActivity a OnDateSetListener.
- Para el año, el mes y el día del mes, cree una instancia de la clase de calendario y asigne el año, el mes y el día del mes a las variables de tipo int.
- Pase el año, el mes y el día del mes para que cuando se abra DatePickerDialog tenga la fecha actual.
@NonNull
@Anular
Diálogo público
onCreateDialog(@Paquete anulable guardadoInstanceState)
{
Calendario mCalendar = Calendario.getInstance();
int año = mCalendar.get(Calendar.YEAR);
int mes = mCalendar.get(Calendar.MES);
int díaDelMes = mCalendar.get(Calendar.DÍA_DE_MES);
devolver nuevo DatePickerDialog(
obtenerActividad(),
(DatePickerDialog.OnDateSetListener)getActivity(),
año, mes, día del mes);
}
El código completo para la clase DatePicker.java se proporciona a continuación.
Java
package
tutorials.droid.datepicker;
import
android.app.DatePickerDialog;
import
android.app.Dialog;
import
android.os.Bundle;
import
androidx.annotation.NonNull;
import
androidx.annotation.Nullable;
import
androidx.fragment.app.DialogFragment;
import
java.util.Calendar;
public
class
DatePicker
extends
DialogFragment {
@NonNull
@Override
public
Dialog onCreateDialog(
@Nullable
Bundle savedInstanceState) {
Calendar mCalendar = Calendar.getInstance();
int
year = mCalendar.get(Calendar.YEAR);
int
month = mCalendar.get(Calendar.MONTH);
int
dayOfMonth = mCalendar.get(Calendar.DAY_OF_MONTH);
return
new
DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener)
getActivity(), year, month, dayOfMonth);
}
}
Paso 4: trabajar con el archivo MainActivity.java
Ahora, en el archivo MainActivity.java , cree un objeto de TextView y Button y asigne los componentes (TextView y Button) con sus ID.
TextView tvDate;
Botón btRecogerFecha;
tvDate = findViewById(R.id.tvDate);
btPickDate = findViewById(R.id.btPickDate);
Implemente OnDateSetListener de la clase DatePickerDialog y el método de anulación. El método establecerá la fecha después de la selección en tvDate TextView.
@Anular
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth)
{
// Crear una instancia de Calendario
Calendario mCalendar = Calendario.getInstance();
// Establecer variables estáticas de la instancia del Calendario
mCalendar.set(Calendario.AÑO,año);
mCalendar.set(Calendario.MES,mes);
mCalendar.set(Calendar.DÍA_DE_MES,díaDelMes);
// Obtener la fecha en forma de string
String de fecha seleccionada = DateFormat.getDateInstance(DateFormat.FULL).format(mCalendar.getTime());
// Establecer la vista de texto en la string de fecha seleccionada
tvDate.setText(selectedDate);
}
En el método implemente setOnClickListener de btPickDate. Cree una instancia de DatePicker (nuestra clase). Use el método show de la instancia y pase y una etiqueta. El código completo para el archivo MainActivity.java se proporciona a continuación.
Java
package
tutorials.droid.datepicker;
import
android.app.DatePickerDialog;
import
android.os.Bundle;
import
android.view.View;
import
android.widget.Button;
import
android.widget.DatePicker;
import
android.widget.TextView;
import
androidx.appcompat.app.AppCompatActivity;
import
java.text.DateFormat;
import
java.util.Calendar;
public
class
MainActivity
extends
AppCompatActivity
implements
DatePickerDialog.OnDateSetListener {
TextView tvDate;
Button btPickDate;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvDate = findViewById(R.id.tvDate);
btPickDate = findViewById(R.id.btPickDate);
btPickDate.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
// Please note that use your package name here
tutorials.droid.datepicker.DatePicker mDatePickerDialogFragment;
mDatePickerDialogFragment =
new
tutorials.droid.datepicker.DatePicker();
mDatePickerDialogFragment.show(getSupportFragmentManager(),
"DATE PICK"
);
}
});
}
@Override
public
void
onDateSet(DatePicker view,
int
year,
int
month,
int
dayOfMonth) {
Calendar mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.YEAR, year);
mCalendar.set(Calendar.MONTH, month);
mCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String selectedDate = DateFormat.getDateInstance(DateFormat.FULL).format(mCalendar.getTime());
tvDate.setText(selectedDate);
}
}
Salida: ejecutar en el emulador
Publicación traducida automáticamente
Artículo escrito por gupta_shrinath y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA