Selector de Fecha en Android

Hola chicosss..

Screenshot_2018-04-29-19-15-55

Si queremos que en un input de Android nos aparezca un DatePicker, selector de fecha, no basta con darle la propiedad date al inputType.
Tenemos que hacer algunos pasos más:


Ahora vamos a nuestro Java:

Cremaos nuestro EditText y Calendar para después poder acceder a ellos:

EditText etBirthday;
Calendar myCalendar = Calendar.getInstance();

Luego, fuera de cualquier método (onCreate por ejemplo):

DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
                          int dayOfMonth) {
        // TODO Auto-generated method stub
        calendario.set(Calendar.YEAR, year);
        calendario.set(Calendar.MONTH, monthOfYear);
        calendario.set(Calendar.DAY_OF_MONTH, dayOfMonth);
        actualizarInput();
    }

};

Y al final el método que actualizará el input:

private void actualizarInput() {
    String formatoDeFecha = "MM/dd/yy"; //In which you need put here
    SimpleDateFormat sdf = new SimpleDateFormat(formatoDeFecha, Locale.US);

    etBirthday.setText(sdf.format(calendario.getTime()));
}

 



 

Con lo que la Activity completa nos quedaría algo así:


public class EditProfileActivity extends AppCompatActivity{

    EditText etBirthday;
    Calendar calendario = Calendar.getInstance();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.edit_profile_view);

        etBirthday = findViewById(R.id.etBirthday);
        etBirthday.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new DatePickerDialog(EditProfileActivity.this, date, calendario
                        .get(Calendar.YEAR), calendario.get(Calendar.MONTH),
                        calendario.get(Calendar.DAY_OF_MONTH)).show();
            }
        });
    }

    DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                              int dayOfMonth) {
            // TODO Auto-generated method stub
            calendario.set(Calendar.YEAR, year);
            calendario.set(Calendar.MONTH, monthOfYear);
            calendario.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            actualizarInput();
        }

    };

    private void actualizarInput() {
        String formatoDeFecha = "MM/dd/yy"; //In which you need put here
        SimpleDateFormat sdf = new SimpleDateFormat(formatoDeFecha, Locale.US);

        etBirthday.setText(sdf.format(calendario.getTime()));
    }

}

Nota: Es inmportante que nuestro EditText tenga la propiedad android:focusable=»false» para que nos el teclado por defecto.

Espero que os sirva de ayuda 🙂

Saludossss.


Tu opinión es importante para mi, ¿Te ha resultado útil este artículo?

6 Comments

antonio

Muchas Gracias!!!
me sirvio tu codigo para un formulario que estoy haciendo!

Un abrazo desde Chile!

Reply
kike

¡¡Hola Antonio!!

Me alegra muchísimo que te haya servido (:
Cuando termines la app si te apetece nos la enseñas y vemos los bien que te ha quedado!!

Abrazos desde España (:

Reply

Responder a kike Cancelar la respuesta

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

*