将选定日期设置为日期选择器对话框

mee*_*tah 2 android datepicker

用户选择日期并重新打开日期选择器对话框后,它设置为当前日期...而不是所选日期...用户重新打开日期选择器对话框后如何将所选日期设置为日期选择器,这是我的代码

@Override
    public void onClick(View v) {
        Dialog.Builder builder = null;
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR)+10;
        c.set(year, c.get(Calendar.MONTH), c.get(Calendar.DATE));
        builder = new DatePickerDialog.Builder(R.style.CustomStyle_DatePicker) {
            @Override
            public void onPositiveActionClicked(DialogFragment fragment) {
                DatePickerDialog dialog = (DatePickerDialog) fragment.getDialog();
                String date = dialog.getFormattedDate(SimpleDateFormat.getDateInstance());
                selected_date.setText(date);
                super.onPositiveActionClicked(fragment);
            }

            @Override
            public void onNegativeActionClicked(DialogFragment fragment) {
                super.onNegativeActionClicked(fragment);
            }
        }.dateRange(System.currentTimeMillis() - 1000, c.getTimeInMillis());
        builder.positiveAction("OK")
                .negativeAction("CANCEL");
        DialogFragment fragment = DialogFragment.newInstance(builder);;
        fragment.show(getFragmentManager(), null);
    }
Run Code Online (Sandbox Code Playgroud)

我到处搜索但无法使其工作,有什么帮助吗?

Dhi*_*asu 6

全局声明:

Calendar selectedDate = Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)

然后将日期设置为构建器,并在用户选择日期为 selectedDate 时保存,如下所示。这将设置当前日期,直到用户选择日期。

@Override
    public void onClick(View v) {
        Dialog.Builder builder = null;
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR)+10;
        c.set(year, c.get(Calendar.MONTH), c.get(Calendar.DATE));
        builder = new DatePickerDialog.Builder(R.style.CustomStyle_DatePicker) {
            @Override
            public void onPositiveActionClicked(DialogFragment fragment) {
                DatePickerDialog dialog = (DatePickerDialog) fragment.getDialog();
                String date = dialog.getFormattedDate(SimpleDateFormat.getDateInstance());
                selected_date.setText(date);
                selectedDate.set(dialog.getYear(),dialog.getMonth(), dialog.getDay());
                super.onPositiveActionClicked(fragment);
            }

            @Override
            public void onNegativeActionClicked(DialogFragment fragment) {
                super.onNegativeActionClicked(fragment);
            }
        }.dateRange(System.currentTimeMillis() - 1000, c.getTimeInMillis()).date(selectedDate.get(Calendar.DATE),
                        selectedDate.get(Calendar.MONTH)
                        , selectedDate.get(Calendar.YEAR));
        builder.positiveAction("OK")
                .negativeAction("CANCEL");
        DialogFragment fragment = DialogFragment.newInstance(builder);
        fragment.show(getFragmentManager(), null);
    }
Run Code Online (Sandbox Code Playgroud)