如何在主机 activity 的片段中的 DatePickerDialog 中设置默认日期?

How do I set the default date in a DatePickerDialog in my fragment from the host activity?

所以我在 Activity 中创建了一个日历对象 "c" 并将日期设置为 2016 年 2 月 29 日。我希望片段对话框加载该日期作为默认日期。我在这里错过了什么?我是否需要删除片段日历对象 'cal'?如果是这样,在片段 onCreateDialog 中,我如何引用或 get() 来自 Activity?

中 set() 方法的日期

来自 Activity 文件:

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    final Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, 2016);
    c.set(Calendar.MONTH, 1);
    c.set(Calendar.DAY_OF_MONTH, 29);

    DialogFragment newFragment = new DatePickerFragment();
    newFragment.show(getSupportFragmentManager(), "datePicker");

来自片段文件:

...
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

        Calendar cal = Calendar.getInstance();

        currentyear = cal.get(Calendar.YEAR);
        currentmonth = cal.get(Calendar.MONTH);
        currentday = cal.get(Calendar.DAY_OF_MONTH);

        DatePickerDialog dateDialog = new DatePickerDialog(this.getActivity(), this, currentyear,currentmonth,currentday);
       return dateDialog;

您在 Activity 中设置的 Calendar c 与片段中的 Calendar cal 不同,它们是两个不同的实例。

我建议您使用 Bundle 将年、月和日传递给片段,这样您会想去:

Bundle data = new Bundle(); data.putInt("...", "..."); // DialogFragment df = new DialogFragment(); df.setArguments(data);

然后在您的 onCreateDialog 片段中,使用以下方法检索数据:

int year = getArguments("...");