You can try this:
// a global variable
private SingleDateAndTimePickerDialog singleDateAndTimePickerDialog = null;
onCreate(){
singleDateAndTimePickerDialog = new SingleDateAndTimePickerDialog(this);
}
@Override
public void onBackPressed() {
if(singleDateAndTimePickerDialog != null
&& singleDateAndTimePickerDialog.isDisplaying()){
singleDateAndTimePickerDialog.dismiss();
return;
}//if
super.onBackPressed();
finish();
}
==================================EDIT=====================================
You can use android DatePicker and TimePicker.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:padding="8dp"
android:layout_height="match_parent">
<DatePicker
android:id="@+id/date_picker"
android:layout_width="match_parent"
android:calendarViewShown="true"
android:spinnersShown="false"
android:layout_weight="4"
android:layout_height="0dp" />
<TimePicker
android:id="@+id/time_picker"
android:layout_weight="4"
android:layout_width="match_parent"
android:layout_height="0dp" />
<Button
android:id="@+id/date_time_set"
android:layout_weight="1"
android:layout_width="match_parent"
android:text="Set"
android:layout_height="0dp" />
</LinearLayout>
..and android dialog.
final View dialogView = View.inflate(activity, R.layout.date_time_picker, null);
final AlertDialog alertDialog = new AlertDialog.Builder(activity).create();
dialogView.findViewById(R.id.date_time_set).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatePicker datePicker = (DatePicker) dialogView.findViewById(R.id.date_picker);
TimePicker timePicker = (TimePicker) dialogView.findViewById(R.id.time_picker);
Calendar calendar = new GregorianCalendar(datePicker.getYear(),
datePicker.getMonth(),
datePicker.getDayOfMonth(),
timePicker.getCurrentHour(),
timePicker.getCurrentMinute());
time = calendar.getTimeInMillis();
alertDialog.dismiss();
}});
alertDialog.setView(dialogView);
alertDialog.show();
So you can do it like this:
@Override
public void onBackPressed() {
if(alertDialog != null && alertDialog.isShowing()){
alertDialog.dismiss();
return;
}//if
super.onBackPressed();
finish();
}