que - selector de fecha y hora en android studio
Selector de fechas: cómo abrir un selector de fechas al hacer clic en editar texto (25)
Así es como lo hago: similar a la respuesta elegida, pero usando una clase de diálogo estático para que sea más reutilizable, y también use onFocusChange en lugar de onClick.
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
DialogFragment datePickerFragment = new DatePickerFragment() {
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
Log.d(TAG, "onDateSet");
Calendar c = Calendar.getInstance();
c.set(year, month, day);
editText.setText(df.format(c.getTime()));
nextField.requestFocus(); //moves the focus to something else after dialog is closed
}
};
datePickerFragment.show(getActivity().getSupportFragmentManager(), "datePicker");
}
}
});
Y el diálogo datepicker.
public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
//blah
}
}
Quiero mostrar la ventana emergente del selector de fecha. He encontrado algunos ejemplos pero no lo estoy recibiendo correctamente. Tengo un edittext y quiero que cuando haga clic en edittext aparezca el cuadro de diálogo selector de fechas y, después de configurar la fecha, la fecha se muestre en edittext en formato dd / mm / aaaa. Por favor, proporcionarme código de ejemplo o buenos enlaces.
He intentado todo lo que se sugirió, pero todos ellos tienen sus propios problemas.
La mejor solución en mi opinión sería utilizar un diseño de marco como el siguiente:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
.... />
<View
android:id="@+id/invisible_click_watcher"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true" />
</FrameLayout>
y luego agregar el código DatePickerDialog que estaba bellamente escrito en la respuesta de @ Android.
Intenta esto en el archivo XML:
<EditText
android:id="@+id/Birthday"
custom:font="@string/font_avenir_book"
android:clickable="true"
android:editable="false"
android:hint="@string/birthday"/>
Ahora en el archivo de Java:
Calendar myCalendar = Calendar.getInstance();
EditText edittext= (EditText) findViewById(R.id.Birthday);
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabel();
}
};
edittext.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
new DatePickerDialog(classname.this, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
});
Ahora agregue el método en la actividad anterior.
private void updateLabel() {
String myFormat = "MM/dd/yy"; //In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
edittext.setText(sdf.format(myCalendar.getTime()));
}
Agregue android:focusable="false"
dentro del archivo xml del EditText para permitir un solo toque.
La respuesta seleccionada no me funcionó del todo, ya que tuve que tocar el cuadro EditarTexto una vez y luego volver a tocarlo antes de que OnClickListener disparara. Pude solucionar este problema al reemplazar OnClickListener con OnTouchListener, en caso de que alguien se haya topado con un problema similar aquí es cómo se ve mi código:
Calendar myCalendar = Calendar.getInstance();
DatePickerDialog.OnDateSetListener date = new
DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabel();
}
};
edittext.setOnTouchListener(new View.OnTouchListener() {
@Override
public void onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
new DatePickerDialog(classname.this, date, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
}
});
private void updateLabel() {
String myFormat = "MM/dd/yy"; //In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
edittext.setText(sdf.format(myCalendar.getTime()));
}
Mi clase para el show DatePicker
. Puedo usar para EditText
, TextView
o Button
import android.app.DatePickerDialog;
import android.content.Context;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class TextViewDatePicker
implements View.OnClickListener, DatePickerDialog.OnDateSetListener {
public static final String DATE_SERVER_PATTERN = "yyyy-MM-dd";
private DatePickerDialog mDatePickerDialog;
private TextView mView;
private Context mContext;
private long mMinDate;
private long mMaxDate;
public TextViewDatePicker(Context context, TextView view) {
this(context, view, 0, 0);
}
public TextViewDatePicker(Context context, TextView view, long minDate, long maxDate) {
mView = view;
mView.setOnClickListener(this);
mView.setFocusable(false);
mContext = context;
mMinDate = minDate;
mMaxDate = maxDate;
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, monthOfYear);
calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
Date date = calendar.getTime();
SimpleDateFormat formatter = new SimpleDateFormat(DATE_SERVER_PATTERN);
mView.setText(formatter.format(date));
}
@Override
public void onClick(View v) {
Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
mDatePickerDialog = new DatePickerDialog(mContext, this, calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
if (mMinDate != 0) {
mDatePickerDialog.getDatePicker().setMinDate(mMinDate);
}
if (mMaxDate != 0) {
mDatePickerDialog.getDatePicker().setMaxDate(mMaxDate);
}
mDatePickerDialog.show();
}
public DatePickerDialog getDatePickerDialog() {
return mDatePickerDialog;
}
public void setMinDate(long minDate) {
mMinDate = minDate;
}
public void setMaxDate(long maxDate) {
mMaxDate = maxDate;
}
}
Utilizando
EditText myEditText = findViewById(R.id.myEditText);
TextViewDatePicker editTextDatePicker = new TextViewDatePicker(context, myEditText, minDate, maxDate);
//TextViewDatePicker editTextDatePicker = new TextViewDatePicker(context, myEditText); //without min date, max date
No se pudo hacer funcionar a ninguno de estos, por lo que agregaré mi uno solo en caso de que ayude
public class MyEditTextDatePicker implements OnClickListener, OnDateSetListener {
EditText _editText;
private int _day;
private int _month;
private int _birthYear;
private Context _context;
public MyEditTextDatePicker(Context context, int editTextViewID)
{
Activity act = (Activity)context;
this._editText = (EditText)act.findViewById(editTextViewID);
this._editText.setOnClickListener(this);
this._context = context;
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
_birthYear = year;
_month = monthOfYear;
_day = dayOfMonth;
updateDisplay();
}
@Override
public void onClick(View v) {
Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
DatePickerDialog dialog = new DatePickerDialog(_context, this,
calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
dialog.show();
}
// updates the date in the birth date EditText
private void updateDisplay() {
_editText.setText(new StringBuilder()
// Month is 0 based so add 1
.append(_day).append("/").append(_month + 1).append("/").append(_birthYear).append(" "));
}
}
También algo que no se menciona en los demás. Asegúrese de poner lo siguiente en EditText xml.
android:focusable="false"
De lo contrario, como en mi caso, el teclado seguirá apareciendo. Espero que esto ayude a alguien
No te olvides de establecer los atributos de Edittext
como seguimiento:
android:clickable="true"
android:focusable="false"
Pensé que era mejor anular la clase EditText ...
public class EditTextDP extends android.support.v7.widget.AppCompatEditText implements View.OnClickListener, DatePickerDialog.OnDateSetListener {
public EditTextDP(Context context) {
super(context);
setOnClickListener(this);
setFocusable(false);
}
public EditTextDP(Context context, AttributeSet attrs) {
super(context, attrs);
setOnClickListener(this);
setFocusable(false);
}
public EditTextDP(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setOnClickListener(this);
setFocusable(false);
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
setText(new StringBuilder().append(dayOfMonth).append("/").append(monthOfYear + 1).append("/").append(year));
}
@Override
public void onClick(View v) {
Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
DatePickerDialog dialog = new DatePickerDialog(getContext(), this, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
dialog.show();
}
}
Y usa eso en el XML en su lugar ...
<*.*.*.EditTextDP
android:id="@+id/c1_dob_hm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/round_edittext_white"
android:ems="10"
android:padding="8dp">
</*.*.*.EditTextDP>
Prueba esto:
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
DataPickerListener listener;
public DatePickerFragment(DataPickerListener l) {
listener = l;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the date picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(),
AlertDialog.THEME_HOLO_LIGHT, this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
month = month + 1;
String stringOfDate = day + "-" + month + "-" + year;
listener.setDate(stringOfDate);
Util.Log(stringOfDate);
}
@Override
public void onCancel(DialogInterface dialog) {
// TODO Auto-generated method stub
super.onCancel(dialog);
listener.cancel();
}
public static interface DataPickerListener {
void setDate(String date);
void cancel();
}
}
// use this function to open datePicker popup
DialogFragment newFragment;
public void pickDate() {
if (newFragment == null)
newFragment = new DatePickerFragment(new PickDateListener());
newFragment.show(getFragmentManager(), "Date Picker");
}
class PickDateListener implements DataPickerListener {
@Override
public void setDate(String date) {
createSpiner(date);
onetouch = false;
}
@Override
public void cancel() {
onetouch = false;
}
}
Puerto Kotlin, llame a la función setDatePicker
private fun setDatePicker(dateEditText: EditText) {
val myCalendar = Calendar.getInstance()
val datePickerOnDataSetListener = DatePickerDialog.OnDateSetListener { _, year, monthOfYear, dayOfMonth ->
myCalendar.set(Calendar.YEAR, year)
myCalendar.set(Calendar.MONTH, monthOfYear)
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth)
updateLabel(myCalendar, dateEditText)
}
dateEditText.setOnClickListener {
DatePickerDialog(this@EditDetailActivity, datePickerOnDataSetListener, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).show()
}
}
private fun updateLabel(myCalendar: Calendar, dateEditText: EditText) {
val myFormat: String = "dd-MMM-yyyy"
val sdf = SimpleDateFormat(myFormat, Locale.UK)
dateEditText.setText(sdf.format(myCalendar.time))
}
Si no desea arruinar su actividad o fragmentar con la lógica del selector de fecha y solo desea abrir un cuadro de diálogo de selección de fecha y obtener una devolución de llamada después de la fecha seleccionada, puede verificar mi respuesta aquí.
Mi respuesta: cómo abrir el selector de fechas al hacer clic en editar texto en el fragmento
También hay otra manera mejor reutilizable:
Crear una clase:
class setDate implements OnFocusChangeListener, OnDateSetListener {
private EditText editText;
private Calendar myCalendar;
public setDate(EditText editText, Context ctx){
this.editText = editText;
this.editText.setOnFocusChangeListener(this);
myCalendar = Calendar.getInstance();
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// this.editText.setText();
String myFormat = "MMM dd, yyyy"; //In which you need put here
SimpleDateFormat sdformat = new SimpleDateFormat(myFormat, Locale.US);
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
editText.setText(sdformat.format(myCalendar.getTime()));
}
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if(hasFocus){
new DatePickerDialog(ctx, this, myCalendar
.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
}
}
Luego llame a esta clase bajo la función onCreate:
EditText editTextFromDate = (EditText) findViewById(R.id.editTextFromDate);
setDate fromDate = new setDate(editTextFromDate, this);
Una solución que utiliza fragmentos, MvvmCross y Xamarin.Android
public class EnterTimeView : MvxFragment, DatePickerDialog.IOnDateSetListener
{
private EditText datePickerText;
public EnterTimeView()
{
this.RetainInstance = true;
}
public override Android.Views.View OnCreateView(Android.Views.LayoutInflater inflater, Android.Views.ViewGroup container, Android.OS.Bundle savedInstanceState)
{
this.HasOptionsMenu = true;
var ignored = base.OnCreateView(inflater, container, savedInstanceState);
var view = inflater.Inflate(Resource.Layout.EnterTimeView, container, false);
datePickerText = view.FindViewById<EditText>(Resource.Id.DatePickerEditText);
datePickerText.Focusable = false;
datePickerText.Click += delegate
{
var dialog = new DatePickerDialogFragment(Activity, Convert.ToDateTime(datePickerText.Text), this);
dialog.Show(FragmentManager, "date");
};
var set = this.CreateBindingSet<EnterTimeView, EnterTimeViewModel>();
set.Bind(datePickerText).To(vm => vm.Date);
set.Apply();
return view;
}
public void OnDateSet(Android.Widget.DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
datePickerText.Text = new DateTime(year, monthOfYear + 1, dayOfMonth).ToString();
}
private class DatePickerDialogFragment : Android.Support.V4.App.DialogFragment
{
private readonly Context _context;
private DateTime _date;
private readonly DatePickerDialog.IOnDateSetListener _listener;
public DatePickerDialogFragment(Context context, DateTime date, DatePickerDialog.IOnDateSetListener listener)
{
_context = context;
_date = date;
_listener = listener;
}
public override Dialog OnCreateDialog(Bundle savedState)
{
var dialog = new DatePickerDialog(_context, _listener, _date.Year, _date.Month - 1, _date.Day);
return dialog;
}
}
Utilizando DataBinding:
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:onClick="@{() -> viewModel.onDateEditTextClicked()}"
android:hint="@string/hint_date"
android:imeOptions="actionDone"
android:inputType="none"
android:maxLines="1"
android:text="@={viewModel.filterDate}" />
(ver inputType
, inputType
y onClick
)
Dentro de ViewModel:
public void onDateEditTextClicked() {
// do something
}
editText.setOnClickListener (new View.OnClickListener () {
@Override
public void onClick(final View v) {
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
final DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(),
new DatePickerDialog.OnDateSetListener() {
String fmonth, fDate;
int month;
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
try {
if (monthOfYear < 10 && dayOfMonth < 10) {
fmonth = "0" + monthOfYear;
month = Integer.parseInt(fmonth) + 1;
fDate = "0" + dayOfMonth;
String paddedMonth = String.format("%02d", month);
editText.setText(fDate + "/" + paddedMonth + "/" + year);
} else {
fmonth = "0" + monthOfYear;
month = Integer.parseInt(fmonth) + 1;
String paddedMonth = String.format("%02d", month);
editText.setText(dayOfMonth + "/" + paddedMonth + "/" + year);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}, mYear, mMonth, mDay);
datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
datePickerDialog.show();
}
});
trabajando bien para mi
Yo defino en la vista EditText
android:focusable="false"
# 1. Quiero mostrar un selector de fecha con la fecha actual como preseleccionada (uso Butterknife para inyección)
@OnClick(R.id.your_view) public void onClickYourView() {
final Calendar myCalendar = Calendar.getInstance();
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// TODO Auto-generated method stub
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String myFormat = "dd MMMM yyyy"; // your format
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.getDefault());
your_view.setText(sdf.format(myCalendar.getTime()));
}
};
new DatePickerDialog(mContext, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show();
}
2. Si desea preseleccionar la fecha, reemplace la última parte con
new DatePickerDialog(mContext, date, 1990, 0, 1).show();
luego puede obtenerlo usando la variable myCalendar o directamente el texto en su vista.
Prueba esto
btn=(Button)findViewById(R.id.chs);
final Dialog dialog = new Dialog(MainActivity.this);
dialog.setCanceledOnTouchOutside(true);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.setContentView(R.layout.datepickerdialog);
dp=(DatePicker) dialog.findViewById(R.id.btp);
dialog.show();
ok=(Button)dialog.findViewById(R.id.btn1);
ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
}
});
Utilizar esta
your_edittext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePicker = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
String date = String.valueOf(dayOfMonth) + "/" + String.valueOf(monthOfYear+1)
+ "/" + String.valueOf(year);
your_edittext.setText(date);
}
}, yy, mm, dd);
datePicker.show();
}
});
class MyClass implements OnClickListener, OnDateSetListener {
EditText editText;
this.editText = (EditText) findViewById(R.id.editText);
this.editText.setOnClickListener(this);
@Override
public void onClick(View v) {
DatePickerDialog dialog = new DatePickerDialog(this, this, 2013, 2, 18);
dialog.show();
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// this.editText.setText();
}
}
public class DatePickerActivity extends AppCompatActivity {
Button button;
static TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button= (Button) findViewById(R.id.btn_click);
textView= (TextView) findViewById(R.id.txt_date);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment newFragment=new DatePickerFragment();
newFragment.show(getFragmentManager(), "datepicker");
}
});
}
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int day) {
String years=""+year;
String months=""+(monthOfYear+1);
String days=""+day;
if(monthOfYear>=0 && monthOfYear<9){
months="0"+(monthOfYear+1);
}
if(day>0 && day<10){
days="0"+day;
}
textView.setText(days+"/"+months+"/"+years);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
//use the current date as the default date in the picker
final Calendar c=Calendar.getInstance();
int year=c.get(Calendar.YEAR);
int month=c.get(Calendar.MONTH);
int day=c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog=null;
datePickerDialog=new DatePickerDialog(getActivity(), this, year, month, day);
return datePickerDialog;
}
}
}
EditText text = (EditText) findViewById(R.id.editText);
text.setOnClickListener(new OnClickListener(){
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View view) {
DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
String date = i2 + "/" + (++i1) + "/" + i;
text.setText(date);
}
},year,month,date);
}
});
datePickerDialog.show();
También puede establecer la fecha mínima y la fecha máxima de estas declaraciones.
datepickerDialoge.getDatepicker().setMinDate(long Date);
datepickerDialoge.getDatepicker().setMaxDate(long Date);
Nota: agregue estas líneas antes de datepickerDialog.show (); Estado de cuenta que obtendrá fecha por así = 12/2/2017.
Espero que mi respuesta ayude.
selectDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePickerDialog mdiDialog =new DatePickerDialog(mContext,new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Toast.makeText(getApplicationContext(),year+ " "+monthOfYear+" "+dayOfMonth,Toast.LENGTH_LONG).show();
}
}, year, month, date);
mdiDialog.show();
}
});
editText1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePickerDialog.OnDateSetListener dpd = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
int s = monthOfYear + 1;
String a = dayOfMonth + "/" + s + "/" + year;
editText1.setText(a);
}
};
Time date = new Time();
DatePickerDialog d = new DatePickerDialog(UpdateStore.this, dpd, date.year, date.month, date.monthDay);
d.show();
}
});
<EditText
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="DD/MM/YYYY"
android:inputType="date"
android:focusable="false"/>
<EditText
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="00:00"
android:inputType="time"
android:focusable="false"/>
Archivo de java
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
EditText selectDate,selectTime;
private int mYear, mMonth, mDay, mHour, mMinute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
selectDate=(EditText)findViewById(R.id.date);
selectTime=(EditText)findViewById(R.id.time);
selectDate.setOnClickListener(this);
selectTime.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (view == selectDate) {
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
selectDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
}
}, mYear, mMonth, mDay);
datePickerDialog.show();
}
if (view == selectTime) {
// Get Current Time
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// Launch Time Picker Dialog
TimePickerDialog timePickerDialog = new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
selectTime.setText(hourOfDay + ":" + minute);
}
}, mHour, mMinute, false);
timePickerDialog.show();
}
}
}