java - 未调用 OnDateSetListener
问题描述
我已经阅读了这篇文章,但没有任何帮助。侦听器仍未被调用。这是我的代码:
private void callDatePicker() {
// получаем текущую дату
final Calendar cal = Calendar.getInstance();
mYear = cal.get(Calendar.YEAR);
mMonth = cal.get(Calendar.MONTH);
mDay = cal.get(Calendar.DAY_OF_MONTH);
dl = new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
String editTextDateParam = dayOfMonth + "." + (monthOfYear + 1) + "." + year;
date_text.setText(editTextDateParam);
Log.d("BIMI", editTextDateParam);
}
};
// инициализируем диалог выбора даты текущими значениями
DatePickerDialog datePickerDialog = new DatePickerDialog(this, dl, mYear, mMonth, mDay);
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) {
String editTextDateParam = mDay + "." + (mMonth + 1) + "." + mYear;
Log.d("GROM", editTextDateParam);
date_text.setText(editTextDateParam);
}
}
});
datePickerDialog.show();
}
单击按钮时,会在 AlertDialog 中调用 callDatePicker。
解决方案
如果您同时设置了BUTTON_POSITIVE
单击侦听器,OnDateSetListener
则只会调用正按钮单击。如果你想打电话,OnDateSetListener
那么不要设置按钮。如果您需要更改颜色、文本等按钮的属性,请在setOnShowListener
. 所以你的最终代码看起来像这样。
private void callDatePicker() {
// получаем текущую дату
int mYear,mMonth,mDay;
final Calendar cal = Calendar.getInstance();
mYear = cal.get(Calendar.YEAR);
mMonth = cal.get(Calendar.MONTH);
mDay = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog.OnDateSetListener dl = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
String editTextDateParam = dayOfMonth + "." + (monthOfYear + 1) + "." + year;
// date_text.setText(editTextDateParam);
Log.d("BIMI", editTextDateParam);
}
};
// инициализируем диалог выбора даты текущими значениями
DatePickerDialog datePickerDialog = new DatePickerDialog(this, dl, mYear, mMonth, mDay);
datePickerDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button pButton = datePickerDialog.getButton (DialogInterface.BUTTON_POSITIVE);
pButton.setText ("Set date");
}
});
datePickerDialog.show();
}
推荐阅读
- r - 操作列表
- python - 尝试在 MAC 上使用 pip 被拒绝?
- gmail - 根据与发送日期相比的内容在 Gmail 中标记电子邮件?
- scala - Spark 连接池 - 这是正确的方法吗
- javascript - 调用 firebase.functions() 时的 firebase-functions.js 内部错误
- r - 循环遍历数据框
- sql-server - 如何将参数中的 SSRS 报告路径发送到存储过程?
- node.js - 从 gitlab 自动部署到 heroku
- php - MySQL左连接使查询非常慢......我该如何重构?
- c++ - 为什么我的 Node tempNode 不能显示正确的数据?