Esta es la forma en que he implementado el botón "Borrar" en mi aplicación. Cuando el usuario hace clic en Borrar, los valores de año/mes/día son todos 0. Puede usar onDateSet() en su aplicación tanto para el botón Establecer como para el botón Borrar de esta manera.
Hice referencia al código fuente de Android (\ frameworks \ base \ core \ java \ android \ app \ DatePickerDialog.java).
También utilicé la ayuda de esilver.
public class DatePickerDialogPlus extends DatePickerDialog {
private final DatePicker mDatePicker;
private final OnDateSetListener mCallBack;
/**
* @param context The context the dialog is to run in.
* @param callBack How the parent is notified that the date is set.
* @param year The initial year of the dialog.
* @param monthOfYear The initial month of the dialog.
* @param dayOfMonth The initial day of the dialog.
*/
public DatePickerDialogPlus(Context context, OnDateSetListener callBack,
int year, int monthOfYear, int dayOfMonth) {
super(context, 0, callBack, year, monthOfYear, dayOfMonth);
mCallBack = callBack;
Context themeContext = getContext();
setButton(BUTTON_POSITIVE,
themeContext.getText(R.string.datePicker_setButton), this);
setButton(BUTTON_NEUTRAL,
themeContext.getText(R.string.datePicker_clearButton), this);
setButton(BUTTON_NEGATIVE,
themeContext.getText(R.string.datePicker_cancelButton), null);
setIcon(0);
setTitle(R.string.datePicker_title);
LayoutInflater inflater = (LayoutInflater)
themeContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.date_picker_dialog, null);
setView(view);
mDatePicker = (DatePicker) view.findViewById(R.id.datePicker);
mDatePicker.init(year, monthOfYear, dayOfMonth, this);
}
@Override
public void onClick(DialogInterface dialog, int which) {
if (mCallBack != null) {
if (which == BUTTON_POSITIVE) {
mDatePicker.clearFocus();
mCallBack.onDateSet(mDatePicker, mDatePicker.getYear(),
mDatePicker.getMonth(), mDatePicker.getDayOfMonth());
} else if (which == BUTTON_NEUTRAL) {
mDatePicker.clearFocus();
mCallBack.onDateSet(mDatePicker, 0, 0, 0);
}
}
}
}
gracias por este código, pero en el ICS botón de limpieza y ajuste no funciona correcta siempre – Jamshid