Android - DatePicker如何保持设置当前日期

时间:2015-04-23 12:43:48

标签: android date datepicker

我使用来自https://github.com/afollestad/material-dialogs的库的自定义DatePicker 我使用该库是因为我需要更改颜色等。

我的代码现在看起来像这样:

public class EditProfileActivity extends ActionBarActivity {
        private TextView birthdate;
        private int mYear, mMonth, mDay;
        private DatePicker datePicker;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_editprofile);
        birthdate = (Button) findViewById(R.id.birthdateTextView);
        birthdate.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
              setCustomDate();
              }
        });

        /* final Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH); */

        }

        public void setCustomDate() {

                new MaterialDialog.Builder(this)
                        .title(R.string.pilih_tanggal)
                        .customView(R.layout.datepicker_layout, true)
                        .positiveText(R.string.ok_caps)
                        .callback(new MaterialDialog.ButtonCallback() {
                            @Override
                            public void onPositive(final MaterialDialog dialog) {
                                super.onPositive(dialog);
                                datePicker = (DatePicker) dialog.findViewById(R.id.datePicker1);
                                datePicker.init(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), new DatePicker.OnDateChangedListener() {
                                @Override
                                public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

                                }
                                });
                         birthdate.setText(new StringBuilder()
                         .append(datePicker.getDayOfMonth())
                         .append("").append(datePicker.getMonth())
                         .append("-").append(datePicker.getYear()));
                        }
                        })
                        .positiveColorRes(R.color.ColorPrimary)
                        .negativeText(R.string.cancel)
                        .negativeColorRes(R.color.ColorPrimary)
                        .show();
        }

所以,我成功地将TextView作为我从DatePicker设置的当前日期,但问题是当我再次点击TextView时,日期将返回到上次日期(默认)。

enter image description here

以上就是我要去挑选日期的时候。 下面是我成功将文本设为选定日期的时间。

enter image description here

但遗憾的是,当我再次点击TextView时,日期又恢复到默认状态,而不是我选择的日期。

enter image description here

有人可以给我一个指示来解决这个问题吗?到目前为止我所知道的是使用

  

OnDateSetListener

但是如何使用图书馆呢?

3 个答案:

答案 0 :(得分:0)

我猜你必须创建另一个单独的日期选择器,通过从textview获取文本来获取日/月/年?如果这没有用,请告诉我,我可以删除这个答案。

答案 1 :(得分:0)

所以,几天前我找到了这样的解决方案:

public void setCustomDate() {
        MaterialDialog dialog = new MaterialDialog.Builder(this)
                .title(R.string.pilih_tanggal)
                .customView(R.layout.datepicker_layout, true)
                .positiveText(R.string.ok_caps)
                .callback(new MaterialDialog.ButtonCallback() {
                    @Override
                    public void onPositive(final MaterialDialog dialog) {
                        super.onPositive(dialog);
                        birthdate.setText(new StringBuilder()
                                .append(datePicker.getDayOfMonth()).append("/").append(datePicker.getMonth() + 1).append("/").append(datePicker.getYear()));
                    }
                })
                .positiveColorRes(R.color.ColorPrimary)
                .negativeText(R.string.cancel)
                .negativeColorRes(R.color.ColorPrimary)
                .show();

        datePicker = (DatePicker) dialog.findViewById(R.id.datePicker1);
        datePicker.init(mYear, mMonth, mDay, new DatePicker.OnDateChangedListener() {
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                mYear = year;
                mMonth = monthOfYear;
                mDay = dayOfMonth;
            }
        });
 }

我需要在.callback之外初始化datepicker,所以当活动运行时,首先会识别出datepicker。 :)

答案 2 :(得分:0)

DatePickerDialog datePicker = new DatePickerDialog(getContext(),
            R.style.DatePicker, datePickerListener,
            cal.get(Calendar.YEAR),
            cal.get(Calendar.MONTH),
            cal.get(Calendar.DAY_OF_MONTH));

 datePicker.updateDate(1988,9,8);