DatePickerFragment.java
package com.example.ashish.ci; import android.app.Activity; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.widget.DatePicker; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * Created by Ashish on 9/22/15. */ public class DatePickerFragment extends DialogFragment { public static final String EXTRA_DATE = "com.example.ashish.ci.date"; private static final String ARG_DATE = "date"; private DatePicker mDatePicker; public static DatePickerFragment newInstance(Date date){ Bundle args = new Bundle(); args.putSerializable(ARG_DATE, date); DatePickerFragment fr = new DatePickerFragment(); fr.setArguments(args); return fr; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // called by FragManager of hosting Activity Date dt = (Date) getArguments().getSerializable(ARG_DATE); Calendar cal = Calendar.getInstance(); cal.setTime(dt); int y = cal.get(Calendar.YEAR); int m = cal.get(Calendar.MONTH); int d = cal.get(Calendar.DAY_OF_MONTH); View v = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_date, null); mDatePicker = (DatePicker) v.findViewById(R.id.dialog_date_date_picker); mDatePicker.init(y, m, d, null); return new AlertDialog.Builder(getActivity()) .setView(v) .setTitle(R.string.date_picker_title) // .setPositiveButton(android.R.string.ok, null) // null for listener, will implement later .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { int year = mDatePicker.getYear(); int month = mDatePicker.getMonth(); int day = mDatePicker.getDayOfMonth(); Date date = new GregorianCalendar(year, month, day).getTime(); sendResult(Activity.RESULT_OK, date); } }) .create(); } private void sendResult(int resultCode, Date date){ if (getTargetFragment() == null){ return; } Intent intent = new Intent(); intent.putExtra(EXTRA_DATE, date); getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent); } }