我曾试图隐藏关于年份档案的日期选择器。
我搜索一些方法。我觉得这个方法适合我。
但我没有实施好。 = =
我用 的ShowDialog(0); 命令调用日期选择器。
然后更改了以下代码:
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;
}
但我运行代码。年份字段存在。
有谁知道为什么?
我尝试输出field.getName(),我只是在下面
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
所以我尝试用mYearPicker替换YEAR。
但我会在下面收到错误消息。
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
有没有人知道如何使用方法修复来隐藏年份字段和上部android 2.2版本?
非常感谢你。答案 0 :(得分:2)
首先尝试更改
if( field.getName().equals("mYearPicker"))
到
if (field.getName().equals("mYearPicker")) || field.getName().equals("mYearSpinner")))
如果这没有帮助,请尝试以下代码
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
}
为我工作,希望能为你效劳。