使用建议的日期打开 DatePicker

Open DatePicker with suggested date

我需要使用基于 GregorianCalendar 的 YEAR-MONTH-DAY_OF_MONTH 属性的默认日期打开 DatePicker。

这是我打开 DatePicker 的代码:

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

例如,如果我的值是这样的:

我打开 DatePicker 时设置的默认值是:

我需要添加什么才能做到这一点?

基本直接来自Android | Pickers

另外,就像任何其他片段一样,您可以使用 setget-Arguments 将数据传递到片段中。

详情:Best practice for instantiating a new Android Fragment

public static class DatePickerFragment extends DialogFragment
                            implements DatePickerDialog.OnDateSetListener {

    public static DatePickerFragment newInstance(int year,int month,int day) {
        Bundle b = new Bundle();
        b.putInt("year", year);
        // put others...

        Fragment f = new DatePickerFragment();
        f.setArguments(b);
        return f;
    }

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

        // Update using the arguments
        Bundle args = getArguments();
        if (args != null) {
            year = args.getInt("year");
            // get others...
        }

        // Create a new instance of DatePickerDialog and return it
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {
        // Do something with the date chosen by the user
    }
}

并使用 newInstance 方法。

DialogFragment newFragment = DatePickerFragment.newInstance(2017,02,07);
newFragment.show(getFragmentManager(), "datePicker");