DatePickerDialog en Android

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 .

calendar mode

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
    xmlns:tools="http://schemas.android.com/tools"
    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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *