Android无法隐藏年度领域的选择者

时间:2014-02-21 06:34:33

标签: android datepicker hide

我曾试图隐藏关于年份档案的日期选择器。

我搜索一些方法。我觉得这个方法适合我。

但我没有实施好。 = =

我用         的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版本?

非常感谢你。

1 个答案:

答案 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
        }

为我工作,希望能为你效劳。