2

我正在为所有版本(版本 2.2 到 4.2)开发一个 android 应用程序。我在其中使用 datePicker 并使用以下代码将所选日期的颜色更改为白色:

if (currentapiVersion >= 14) {

    ViewGroup dayChildpicker = (ViewGroup) datePicker
            .findViewById (Resources.getSystem().getIdentifier("day", "id", "android"));
    ViewGroup monthChildpicker = (ViewGroup) datePicker
            .findViewById(Resources.getSystem().getIdentifier("month", "id", "android"));
    ViewGroup yearChildpicker = (ViewGroup) datePicker
            .findViewById(Resources.getSystem().getIdentifier("year", "id", "android"));

    EditText dayET = null;
    EditText mornthET = null;
    EditText yearET = null;

    dayET = (EditText) dayChildpicker.getChildAt(1);
    mornthET = (EditText) monthChildpicker.getChildAt(1);
    yearET = (EditText) yearChildpicker.getChildAt(1);

    dayET.setTextColor(Color.WHITE); // null pointer error on this line
    mornthET.setTextColor(Color.WHITE);
    yearET.setTextColor(Color.WHITE);
}

但这会在 android 4.1 和 4.2(Jelly beans) 中抛出空指针异常

dayET.setTextColor(Color.WHITE);

在果冻豆中,我没有在 datepicker 中获得编辑文本视图。

在 jellybeans 中获取日期选择器的子项的方法是什么,以及如何在日期选择器中更改所选日期的文本颜色。

请指导我。

4

1 回答 1

0

我不确定是否getChildAt(1)真的获得了控件,因为可能无法保证控件在ViewGroup. 但是,您应该能够通过标识符以不同方式引用它们

改变这些

dayET = (EditText) dayChildpicker.getChildAt(1);
mornthET = (EditText) monthChildpicker.getChildAt(1);
yearET = (EditText) yearChildpicker.getChildAt(1);

对这些

dayET = (EditText) dayChildpicker.findViewById(Resources.getSystem().getIdentifier("numberpicker_input", "id",  "android"));
mornthET = (EditText) monthChildpicker.findViewById(Resources.getSystem().getIdentifier("numberpicker_input", "id",  "android"));
yearET = (EditText) yearChildpicker.findViewById(Resources.getSystem().getIdentifier("numberpicker_input", "id",  "android"));

这应该允许您正确引用它们而不会出现空指针错误。

如果您有其他问题或者它不起作用,请告诉我。

于 2013-03-20T15:43:00.883 回答