android 4.1和4.2中的DatePicker问题

时间:2013-03-20 14:38:02

标签: android android-layout android-widget datepicker android-datepicker

我正在为所有版本(版本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);
}

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

dayET.setTextColor(Color.WHITE);

在Jelly bean中,我没有在datepicker中获得编辑文本视图。

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

请指导我。

1 个答案:

答案 0 :(得分: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"));

这应该允许您在没有空指针错误的情况下正确引用它们。

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