Android's DatePickerDialog class has a handy little function getDatePicker(), which exposes the private DatePicker mDatePicker.
Problem with that is it's only available on Honeycomb/API 11+. I don't want to raise my damn API level and leave 2.3 users behind! They're the majority of my users (at time of writing)
So, what can I do to get around this design oversight? Extending/subclassing the DatePickerDialog class won't work, because it's still a private variable.
Good thing is that even on Android, reflection is still a valid option. What reflection does is use Java's internal mechanisms to access the variable directly from the object.
 public DatePicker getDatePicker() {
   try {
     Field field = DatePickerDialog.class.getDeclaredField("mDatePicker");
     field.setAccessible(true);
     return (DatePicker) field.get(datePickerDialog);
   }
   catch (NoSuchFieldException e) {
     e.printStackTrace();
   }
   catch (IllegalArgumentException e) {
     e.printStackTrace();
   }
   catch (IllegalAccessException e) {
     e.printStackTrace();
   }
 
   return null;
 }   This little helper function works a treat! Unless the variable is renamed in other revisions of Android, it should work fine in all cases.
