我使用来自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时,日期将返回到上次日期(默认)。
以上就是我要去挑选日期的时候。 下面是我成功将文本设为选定日期的时间。
但遗憾的是,当我再次点击TextView时,日期又恢复到默认状态,而不是我选择的日期。
有人可以给我一个指示来解决这个问题吗?到目前为止我所知道的是使用
OnDateSetListener
但是如何使用图书馆呢?
答案 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);