I have a DatePickerFragment class and an associated button with it. As a result, I have a window with a choice of date. I want to make the same window, only with the choice of time TimePickerFragment. Because the classes are similar, they need to be changed a little, but something went wrong with me. At the end I highlighted the problem area with comments. What needs to be changed?
public class DatePickerFragment extends DialogFragment { public static final String EXTRA_DATE = "com.diplom.android.diplom.taskIntent.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 fragment = new DatePickerFragment(); fragment.setArguments(args); return fragment; } @Override public Dialog onCreateDialog(Bundle savedInstanceState){ Date date = (Date) getArguments().getSerializable(ARG_DATE); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int year = calendar.get(Calendar.YEAR); int mouth = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); View v = LayoutInflater.from(getActivity()) .inflate(R.layout.dialog_date, null); mDatePicker = (DatePicker) v.findViewById(R.id.dialog_date_picker); mDatePicker.init(year, mouth, day, null); return new AlertDialog.Builder(getActivity()) .setView(v) .setTitle(R.string.date_picker_title) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { 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); } }
And the button with which it is associated
mDateButton = (Button) v.findViewById(R.id.task_date_title); updateDate(); mDateButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { FragmentManager manager = getFragmentManager(); DatePickerFragment dialog = DatePickerFragment.newInstance(mTask.getDate()); dialog.setTargetFragment(TaskFragment.this, Request_DATE); dialog.show(manager, DIALOG_DATE); } }); I need to make a TimePickerFragment. That's what I got.
@Override public Dialog onCreateDialog(Bundle savedInstanceState){ Date date = (Date) getArguments().getSerializable(ARG_TIME); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); //calendar.setTime(date); // mTimePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY)); // mTimePicker.setCurrentMinute(calendar.get(Calendar.MINUTE)); int hours = calendar.get(Calendar.HOUR); int minutes = calendar.get(Calendar.MINUTE); View v = LayoutInflater.from(getActivity()) .inflate(R.layout.dialog_time, null); mTimePicker = (TimePicker) v.findViewById(R.id.dialog_time_picker); mTimePicker.setIs24HourView(true); mTimePicker.setCurrentHour(new Integer(minutes)); mTimePicker.setCurrentHour(new Integer(hours)); // mTimePicker.init(year, mouth, day, null); return new AlertDialog.Builder(getActivity()) .setView(v) .setTitle(R.string.time_picker_title) .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { ....//Вот здесь я не знаю, что сделать, чтобы ......//вернуть нужный мне объект со временем int hours = mTimePicker.getHour(); int minuts = mTimePicker.getMinute(); Date time = ; sendResult(Activity.RESULT_OK, time); } }) .create(); } private void sendResult(int resultCode, Date time){ if (getTargetFragment() == null) { return; } Intent intent = new Intent(); intent.putExtra(EXTRA_TIME, time); getTargetFragment() .onActivityResult(getTargetRequestCode(), resultCode, intent); }