2

xml の NumberPicker:

<NumberPicker
        android:id="@+id/np"
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_weight="1" />

そしてここにボタンがあります:

<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:padding="30dp"
    android:text="Any text!"
    android:background="@drawable/round_button" />

ナンバーピッカーの OnValueChangedListener:

//Set a value change listener for NumberPicker
    numberPicker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal){

            //Statement goes here...

        }
    });

ユーザーが値を変更するたびに、onvaluechange のステートメントが正常に実行されます。しかし、ボタンを使用してナンバーピッカーの値を更新したいと思います。

これで、onclicklistener をボタンに設定しました。

b1 = (Button) rootView.findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //Increment NumberPicker value by 1
            numberPicker.setValue(numberPicker.getValue() + 1);
        }
    });

これは機能し、number picker の値を 1 増やしますが、値が変更されたことを numberpicker に通知しないため、内部のコードonValueChange()は実行されません。ユーザーが手動でナンバー ピッカーをスクロールした場合にのみ、ステートメントが実行されます。ボタンがクリックされたときに同じことが起こるようにしたい。

4

2 に答える 2