Reputation: 3306
I had try to hide date picker about year file.
I search some method. I feel the method is suitable for me.
But I was not implement ok. = =
I use showDialog(0); command to call date picker.
Then changed some code below:
protected Dialog onCreateDialog(int id) {
switch (id) {
case 0:
dlg =new DatePickerDialog(this, dsl, mYear, mMonth, mDay);
try
{
Field f[] = dlg.getClass().getDeclaredFields();
for( Field field :f)
{
Log.e("info", "f:"+field.getName());
if( field.getName().equals("mYearPicker"))
{
field.setAccessible(true);
Object yearPicker = new Object();
yearPicker = field.get(dlg);
((View) yearPicker).setVisibility(View.GONE);
}
}
dlg.setTitle(SystemData.DATEPICKER_TITLE);
dlg.setButton(DatePickerDialog.BUTTON_POSITIVE, SystemData.DATEPICKER_SUBMIT, dlg);
}
catch(SecurityException e)
{
Log.d("info", e.getMessage() );
}
catch(IllegalArgumentException e)
{
Log.e("info", e.getMessage());
}
catch(IllegalAccessException e)
{
Log.e("info", e.getMessage());
}
return dlg;
default:
break;
}
return null;
}
But I run the code. The Year field is exist.
Have any one know why?
I try to output field.getName(), I just get below
02-21 14:28:21.245: E/info(32085): f:DAY
02-21 14:28:21.245: E/info(32085): f:MONTH
02-21 14:28:21.245: E/info(32085): f:YEAR
02-21 14:28:21.245: E/info(32085): f:mCallBack
02-21 14:28:21.245: E/info(32085): f:mDatePicker
So I try to replace YEAR with mYearPicker .
But I will get error message below.
02-21 14:30:59.909: E/AndroidRuntime(32523): FATAL EXCEPTION: main
02-21 14:30:59.909: E/AndroidRuntime(32523): java.lang.ClassCastException: java.lang.String cannot be cast to android.view.View
Have any one know how to use the method fix to hide the year field and upper android 2.2 version ?
thank you very much.
Upvotes: 1
Views: 563
Reputation: 213
First try changing
if( field.getName().equals("mYearPicker"))
to
if (field.getName().equals("mYearPicker")) || field.getName().equals("mYearSpinner")))
if that doesn't help, try the following code
try {
Field[] datePickerDialogFields = dlg.getClass().getDeclaredFields();
for (Field datePickerDialogField : datePickerDialogFields) {
if (datePickerDialogField.getName().equals("mDatePicker")) {
datePickerDialogField.setAccessible(true);
DatePicker datePicker = (DatePicker) datePickerDialogField
.get(dlg);
Field datePickerFields[] = datePickerDialogField.getType()
.getDeclaredFields();
for (Field datePickerField : datePickerFields) {
if ("mYearPicker".equals(datePickerField.getName())
|| "mYearSpinner".equals(datePickerField
.getName())) {
datePickerField.setAccessible(true);
Object yearPicker = new Object();
yearPicker = datePickerField.get(datePicker);
((View) yearPicker).setVisibility(View.GONE);
}
}
}
}
} catch (Exception e) {
// TODO: handle exception
}
Works for me, hopefully will work for you.
Upvotes: 2