Я определил DatePickerFragment в своем приложении для Android, вот его код:
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { private int year; private int month; private int day; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current date as the default date in the picker final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); // Create a new instance of DatePickerDialog and return it return new DatePickerDialog(getActivity(), this, year, month, day); } @Override public void onDateSet(DatePicker view, int year, int month, int day) { this.year = year; this.month = month; this.day = day; } public Date getDateFromDatePicker(){ Calendar calendar = Calendar.getInstance(); calendar.set(year, month, day); return calendar.getTime(); } }
Я хочу получить дату из этого средства выбора даты из TaskFragment и установить для атрибута date в моем классе Task значение, равное выбранной дате.
// Method for date picker to appear once the "Due Date" button is clicked.
datePickerButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getActivity().getFragmentManager();
DatePickerFragment datePicker = new DatePickerFragment();
datePicker.show(fm, "datePicker");
task.setDate(datePicker.getDateFromDatePicker());
//test
System.out.println(task.getDate());
}
});
При нажатии кнопки появляется окно выбора даты. Однако дата устанавливается неправильно, и фактически устанавливается сразу после нажатия кнопки даты, а не при выборе даты в средстве выбора. Кроме того, при печати даты я получаю следующее, независимо от того, какую дату я выберу: I / System.out: Wed Dec 31 10:47:38 GMT + 00: 00 2 Чтение некоторых решений здесь направило меня на определение onDateSet и getDateFromDatePicker методы, но они не работают правильно. Любая помощь очень ценится, спасибо!