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(ジェリービーンズ)の行でnullポインター例外をスローしています

dayET.setTextColor(Color.WHITE);

ジェリービーンズでは、日付ピッカーで編集テキスト ビューが表示されません。

ジェリービーンズで日付ピッカーの子を取得する方法と、日付ピッカーで選択した日付のテキストの色を変更する方法は何ですか。

私を案内してください。

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 に答える