如何在下次通话时在DatePickerDialog中显示先前选择的日期?

AJW*_*AJW 5 android date android-fragments

首次打开对话框时,DatePickerDialog将被加载到Fragment中,其中以今天的显示为默认日期。然后,用户选择一个日期,然后关闭该对话框。在下一次重新打开时,如何显示以前选择的日期作为默认日期,而不是显示今天的日期?

我曾在Activity中尝试过.set(),但不知道如何使用.get()来检索片段中的日期。我已经尝试过在Activity和片段之间使用侦听器进行接口,但是无法使其正常工作,对于我要实现的简单任务而言,它似乎过于复杂。而且我尝试了从Activity发送到片段的捆绑包,但是我也无法使其正常工作。请指教。

活动文件:

...
final Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, day);
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
Run Code Online (Sandbox Code Playgroud)

片段文件:

...
public static class DatePickerFragment extends DialogFragment
                        implements DatePickerDialog.OnDateSetListener {

@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);

    return new DatePickerDialog(getActivity(), this, year, month, day);
}

public void onDateSet(DatePicker view, int year, int month, int day) {
    // Save selected date in a date variable here?  How?
    // How do I then use the date variable in onCreateDialog
    // rather than the get(Calendar) code that returns today's date? 
}
Run Code Online (Sandbox Code Playgroud)

}

Dav*_*vid 1

获取具有默认今天日期的 DatePicker:

@SuppressLint("SimpleDateFormat")
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
private Calendar calendar = null;

int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
OnDateSetListener dateSetListener = new OnDateSetListener() {

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
calendar.set(year, monthOfYear, dayOfMonth);
//this line save-s the DatePicker selected date to the edittext
//you can try with:  Date dpDate =new Date(sdf.format(calendar.getTime();
birthDate.setText(sdf.format(calendar.getTime()));
}
};

final DatePickerFragment datePickerFragment = new DatePickerFragment(StepSettingsView.this, dateSetListener, year, month, day);
datePickerFragment.getDatePicker().setMaxDate(new Date().getTime());
datePickerFragment.show();
                    datePickerFragment.getButton(DatePickerDialog.BUTTON_NEUTRAL).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
birthDate.setText("");
datePickerFragment.dismiss();
}
});
Run Code Online (Sandbox Code Playgroud)