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

时间:2015-09-22 01:02:19

标签: android android-fragments android-calendar android-datepicker

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

来自活动文件:

@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");
来自Fragment文件的

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

1 个答案:

答案 0 :(得分:1)

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

我建议你使用Bundle将年,月和日传递给片段,所以你想要去:

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

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

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