Hola chicosss..
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.
muchas gracias bro. dejo mi comentario solo para ello, dar las gracias
¡Muchas gracias Ernesto!
Me alegro que te haya servido (:
¡Saludos!
Muchas gracias, ya me estaba volviendo loca,jajaja.
¡Olé que bien Carmen!
Me alegro que haya ayudado (:
¡Saludos!
Muchas Gracias!!!
me sirvio tu codigo para un formulario que estoy haciendo!
Un abrazo desde Chile!
¡¡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 (: