Reputation: 567
All I've implemented the date/time picker various time in the same activity in which I need to use it. Now I want to create a single class using which I can call that picker wherever it is needed. Thanks!
Upvotes: 1
Views: 646
Reputation: 11756
If you are using Fragments use this class:
public class DatePickerDialogFragment extends DialogFragment {
private Context context;
private Calendar MinDate, MaxDate;
private OnDateSetListener mDateSetListener;
public DatePickerDialogFragment() {
}
public DatePickerDialogFragment(OnDateSetListener callback, Calendar MinDate, Calendar MaxDate, Context context) {
mDateSetListener = callback;
this.MinDate = MinDate;
this.MaxDate = MaxDate;
this.context = context;
}
public DatePickerDialogFragment(OnDateSetListener callback, Context context) {
mDateSetListener = callback;
this.context = context;
}
DatePickerDialog dd;
DatePicker dp;
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar cal = Calendar.getInstance();
dd = new DatePickerDialog(getActivity(), this.mDateSetListener, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
dd.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
try {
if (MinDate!=null&&MaxDate!=null) {
((DatePickerDialog) dialog).getDatePicker().setMaxDate(MaxDate.getTimeInMillis());
((DatePickerDialog) dialog).getDatePicker().setMinDate(MinDate.getTimeInMillis());
}
} catch (NullPointerException e) {
dialog.dismiss();
e.printStackTrace();
}
}
});
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
return dd;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
}
And use it like:
dialogFragment = new DatePickerDialogFragment(new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar cal = GregorianCalendar.getInstance();
cal.set( year, monthOfYear, dayOfMonth);
String currentDateandTime = sdf.format( cal.getTime());
et_date.setText(currentDateandTime);
}
}, context);
And Show it like
dialogFragment.show(getFragmentManager(), "Date");
Upvotes: 3