2

我正在開發所有版本(版本2.2到4.2)的Android應用程序。我在它使用日期選擇器,並使用下面的代碼更改選定日期的顏色爲白色:在Android 4.1和4.2中的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); 
} 

但是,這是在該行

dayET.setTextColor(Color.WHITE); 
扔在Android的4.1和4.2(果凍豆)空指針異常

在果凍豆,我沒有得到日期選擇器中的編輯文本視圖。

在豆形軟糖中獲取日期選取器的孩子以及如何更改日期選擇器中選定日期的文本顏色的方法是什麼?

請指導我。

+0

您可以添加堆棧跟蹤並指出您獲得NPE的哪一行代碼? – Kirk 2013-03-20 15:00:40

+0

嗨柯克,我在dayET.setTextColor(Color.WHITE)獲得NPE;在果凍豆dayET =(EditText)dayChildpicker.getChildAt(1);此代碼不會返回任何EditText視圖。我不知道爲什麼 ? – 2013-03-20 15:16:48

回答

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")); 

這應該讓你沒有空指針錯誤正確地引用這些。

讓我知道如果您有其他問題或它不起作用。

+0

上面的代碼不起作用。它將NPE扔在同一條線上。現在在Android 4.0以及4.2 – 2013-03-20 16:00:39

+0

嗯。最後一次嘗試用'numberpicker_input'替換'timepicker_input'。如果不是的話,你可能會被迫創建自己的'DatePicker'小部件來暴露'EditText'小部件。代碼爲 Kirk 2013-03-20 16:04:46

+0

謝謝。 numberpicker_input解析NPE,但在ANdroid 4.2中,選擇日期的文本顏色不會變成白色,它會更改爲默認顏色(黑色)。我也通過使用4.0和4.2的獨立條件來做到這一點。對於4.0我使用dayET =(EditText)dayChildpicker.getChildAt(1);併爲4.2我用dayET =(EditText)dayChildpicker.getChildAt(0);這也不會拋出NPE,但在4.2中它返回對象而不是EditTeXt視圖。在你的情況下,這個問題是相同的。我不明白爲什麼Android 4.0操作系統會重新編輯EditText對象,但Android 4.2不會重新編輯EditText對象? – 2013-03-20 16:15:35