Reputation: 2785
As in question title i want to display a date and time picker in one dialog in android. Maybe display first datepicker, after user select a date it should transitate timepicker without closing and reopen the dialog.
How to do this? Thanks
Upvotes: 1
Views: 1135
Reputation: 469
//my style of date and time picker //datepicker
private SimpleDateFormat dateFormat,timeFormat;
dateFormat =new SimpleDateFormat("EEEE,MMM d");
timeFormat = new SimpleDateFormat("HH:mm a");
//my onclick
@Override
public void onClick(View v) {
if (v.getId()==R.id.dob){
openDatePicker(new DatePickerDialog.OnDateSetListener() {
@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);
String dateString=formatDate(calendar.getTimeInMillis());
dob.setText(dateString);
}
});
}
// opendatepicker method
private String formatDate(long timeStamp){
Date date =new Date(timeStamp);
String dateToShow = dateFormat.format(date);
return dateToShow;
}
private void openDatePicker(DatePickerDialog.OnDateSetListener listner){
Calendar calendar=Calendar.getInstance();
new DatePickerDialog(this,listner,calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();
}
//and time picker
if (v.getId()==R.id.time){
openTimePicker(new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
String time=getStringTime(hourOfDay,minute);
textTime.setText(time);
}
});
}
//opentimepickermethod
private void openTimePicker(TimePickerDialog.OnTimeSetListener listner){
Date date=new Date();
new TimePickerDialog(this,listner,date.getHours(),date.getMinutes(),false).show();
}
private String getStringTime(int hour,int minute){
String am_pm="";
Calendar calendar=Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
if(calendar.get(Calendar.AM_PM)==Calendar.AM){
am_pm="AM";
return ""+calendar.get(Calendar.HOUR)+":"+calendar.get(Calendar.MINUTE)+""+am_pm;
}else{
am_pm="PM";
if(calendar.get(Calendar.HOUR)==0) {
hour = 12;
return "" + hour + ":" + calendar.get(Calendar.MINUTE) + "" + am_pm;
}else
return ""+calendar.get(Calendar.HOUR)+":"+calendar.get(Calendar.MINUTE)+""+am_pm;
}
}
Upvotes: -1
Reputation: 4497
You can use thar library with Material Design on Pre-Lollipop devices, it's so beautiful Library.
https://github.com/flavienlaurent/datetimepicker
Time picker it's amazing.
Upvotes: 2