ManishNegi
ManishNegi

Reputation: 567

How do I create a date/time picker in a separate class and use it in various classes?

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

Answers (1)

insomniac
insomniac

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

Related Questions