【问题标题】:datepicker dialog values becomes emptydatepicker 对话框值变为空
【发布时间】:2015-11-18 06:50:32
【问题描述】:

大家好,我需要有关日期选择器对话框的帮助,因为我将它的值保存到 onDateSet 内的变量中:“selectedYear”、“selectedMonth”、“selectedDay” 这些是在类中声明为私有的变量。我的问题是在使用格式日期函数格式化日期后,变量的值又回到了空,这就是为什么我创建了一个新函数来保存它们,我知道这是一个混乱的举动,我想知道为什么是变量变空了,什么是此代码的更好修复方法。非常感谢

 datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                Calendar newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);

                selectedYear = year;
                selectedMonth = monthOfYear;
                selectedDay = dayOfMonth;
                setDateEdit.setText(formatDate(selectedYear, selectedMonth, selectedDay));
            }
        }, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));


private String formatDate(int year, int month, int day) {
        saveDateToVar(year,month,day);
        Calendar cal = Calendar.getInstance();
        cal.setTimeInMillis(0);
        cal.set(year, month, day);
        Date date = cal.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy");
        return sdf.format(date);
    }



  private void saveDateToVar(int year, int month, int day){
        savedYear = year;
        savedDay = day;
        savedMonth = month;
    }

【问题讨论】:

标签: android datepickerdialog


【解决方案1】:

使用此代码并根据您的需要进行修改。这将帮助您打开日期选择器来选择日期。

public class DateDialog extends DialogFragment implements DatePickerDialog.OnDateSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        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);
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {
        month = month + 1;
        textView.setText(year + "-" + month + "-" + day);
    }
}

您可以使用代码分别设置日期或月份或年份。 您必须以这种方式调用该方法。

btn_showDate.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            DialogFragment newFragment = new DateDialog();
            newFragment.show(getActivity().getSupportFragmentManager(), "datePicker");

        }
    });

当你点击“确定”时,会自动在 textView 上设置显示日期。

快乐的代码,乐于助人。 :)

【讨论】:

  • 在我的代码中,我打算将“selectedYear”、“selectedMonth”、“selectedDay”用于其他目的,这就是为什么我需要使用其他函数来获取它。还是谢谢。
猜你喜欢
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多