package cgeo.geocaching.ui.dialog; import android.app.DatePickerDialog; import android.app.DatePickerDialog.OnDateSetListener; import android.app.Dialog; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.widget.DatePicker; import java.util.Calendar; public class DateDialog extends DialogFragment implements OnDateSetListener { private Calendar date; public interface DateDialogParent { void setDate(final Calendar date); } public static DateDialog getInstance(final Calendar date) { final DateDialog dateDialog = new DateDialog(); final Bundle args = new Bundle(); args.putSerializable("date", date); dateDialog.setArguments(args); return dateDialog; } @Override @NonNull public Dialog onCreateDialog(final Bundle savedInstanceState) { final Bundle args = getArguments(); date = (Calendar) args.getSerializable("date"); final int year = date.get(Calendar.YEAR); final int month = date.get(Calendar.MONTH); final int day = date.get(Calendar.DAY_OF_MONTH); // Create a new instance of DatePickerDialog and return it final DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day); dialog.onDateChanged(dialog.getDatePicker(), year, month, day); return dialog; } @Override public void onDateSet(final DatePicker view, final int year, final int monthOfYear, final int dayOfMonth) { date.set(year, monthOfYear, dayOfMonth); ((DateDialogParent) getActivity()).setDate(date); } }