NumberPicker onValueChange 未被调用

NumberPicker onValueChange not being called

您好,我在实施使用 NumberPickerDialogFragment 时遇到了一些问题。我有一些代码,如果用户按下按钮,将提示用户通过 AlertDialog 输入 select 一个数字。我能够显示 Dialog 正常,但是当我通过 Picker select 一个数字时,我无法保存该值。根据我的调试,似乎从未调用过 onValueChange 方法。任何想法为什么? 下面是我的 numberPicker DialogFragment

代码
public static class numberPickerDialog extends DialogFragment
        implements NumberPicker.OnValueChangeListener {


    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState){

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final NumberPicker picker = new NumberPicker(getActivity());
        picker.setMinValue(1);
        picker.setMaxValue(60);
        picker.setValue(25);
        picker.setWrapSelectorWheel(false);

        builder.setMessage("Set Study Time")
                .setPositiveButton("Set", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //
                    }
                })
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //cancel
                    }
                });

        final FrameLayout parent = new FrameLayout(getActivity());
        parent.addView(picker, new FrameLayout.LayoutParams(
                FrameLayout.LayoutParams.WRAP_CONTENT,
                FrameLayout.LayoutParams.WRAP_CONTENT,
                Gravity.CENTER));
        builder.setView(parent);

        Dialog dialog = builder.create();
        return dialog;
    }

    @Override
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
        String toastMessage = "test";
        Toast toast = Toast.makeText(getActivity(), toastMessage, Toast.LENGTH_SHORT);
        toast.show();
    }
}

您必须将 OnValueChangeListener 附加到 NumberPicker。

您所要做的就是:numberPicker.setOnValueChangedListener(this);