简体   繁体   English

用建议的日期打开DatePicker

[英]Open DatePicker with suggested date

I need to open a DatePicker with a default date based on the YEAR-MONTH-DAY_OF_MONTH properties of a GregorianCalendar. 我需要基于GregorianCalendar的YEAR-MONTH-DAY_OF_MONTH属性打开具有默认日期的DatePicker。

Here is the code where I open the DatePicker: 这是我打开DatePicker的代码:

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

For exemple, if my values are like this: 例如,如果我的价值观是这样的:

  • MyCalendar.YEAR = 2017 MyCalendar.YEAR = 2017
  • MyCalendar.MONTH = 2 MyCalendar.MONTH = 2
  • MyCalendar.DAY_OF_MONTH = 22 MyCalendar.DAY_OF_MONTH = 22

The default value set when I open the DatePicker would be: 打开DatePicker时设置的默认值为:

在此处输入图片说明

What do I have to add to do that? 为此我必须添加什么?

Basically straight from Android | 基本上直接来自Android Pickers 选择器

Plus, just like any other Fragment, you can use set and get - Arguments to pass data into the fragment. 另外,就像任何其他的片段,您可以使用setget - Arguments将数据传递到片段。

Details: Best practice for instantiating a new Android Fragment 详细信息: 实例化新的Android片段的最佳做法

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
    }
}

And use that newInstance method. 并使用该newInstance方法。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM