5

Android UIにバグを見つけた可能性があると思いますが、何か間違ったことをしていないことを確認したいと思います。これが、問題の原因となっている、実行しているコードの簡略化されたバージョンです。このリスナーは、UIの特定のNumberPickerに設定されており、適切に無効化/有効化されますが、ユーザーが無効化する他のNumberPickersのいずれかの値を変更した場合、少し奇妙な動作をします。

それでも入力は適切に無効になりますが、値をグレー表示できず、まだ有効になっているように見えます。これは意図されたものですか?私は何か間違ったことをしていますか?

NumberPicker.OnValueChangeListener diceChangeListener = new NumberPicker.OnValueChangeListener() {
    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
        View parent = (View) picker.getParent();    

        if (newVal == 0) {
            ((NumberPicker) parent.findViewById(R.id.diceCountPicker1)).setEnabled(false);
        } else if (oldVal == 0) {
            ((NumberPicker) parent.findViewById(R.id.diceCountPicker1)).setEnabled(true);
        }
    }
};

これを行うためのより良い方法があるかどうか、またはこれが正当なバグであるかどうかを教えてください。バグの場合、それを回避する方法はありますか?

編集:XMLでのdiceCountPicker1の定義は次のとおりです。

<NumberPicker
    android:id="@+id/diceCountPicker1"
    android:layout_width="48dp"
    android:layout_height="128dp"
    android:descendantFocusability="blocksDescendants"
    />

編集2:

私はこれをエミュレーターでテストし、Jellybean(4.1)より前に問題が存在しないことを確認しました。ICSでは正しく機能します。うざい。しかし、私は今のところそれと一緒に暮らすことができるかもしれません。バグを回避するための潜在的な方法については、これを開いたままにしておきますが、実際のバグのように見え、修正できるとは思えません。

4

3 に答える 3

2

このようにしてみてください。

        NumberPicker npicker = (NumberPicker) findViewById(R.id.diceCountPicker1);
        npicker.setMaxValue(100);
        npicker.setMinValue(0);

        npicker.setOnValueChangedListener(new OnValueChangeListener() {
            @Override
            public void onValueChange(NumberPicker picker, int oldVal,
                    int newVal) {
                // Conditions for Enable/Disable picker                 
                if (newVal == 0) {
                    picker.setEnabled(false);
                } else if (oldVal == 0) {
                    picker.setEnabled(true);
                }
            }
        });

それは私にとってはうまく機能し、追加された条件に従って有効化/無効化で適切に動作しています。

ありがとう。

于 2012-12-19T05:22:00.600 に答える
2

さて、これに関する追加のフィードバックはありませんので、先に進んで終了します。これが私が知っていることです:

これは、Jellybeanで導入されたバグのようです。エミュレーターでテストしましたが、UIはICS以前で期待どおりに機能します。とりあえず、これに対処して、公式のバグレポートを提出しようと思います。

于 2012-12-22T05:52:37.547 に答える
0

android:enabled="false"NumberPickerおよびDatePickerxmlレイアウトで設定しても、Android4.0.4デバイスのコントロールがグレー表示されません。 ただし、期待どおりの作業を介してプログラムでこれを行うsetEnabled(false)

于 2014-05-01T04:55:34.563 に答える