1

我在对话框中使用了材料NumberPicker,并且在打开对话框时遇到了一个问题,用户可以在其中手动输入任何数字(从 1 到 10)NumberPicker并从对话框中按下“确定”按钮然后没有得到输入的正确值NumberPicker但它返回如果在 1 到 10 之间滚动并按下“确定”按钮,则值正确。

[输入自定义号码1

4

2 回答 2

1

我有同样的问题,做了代码你可以检查下面的代码

numberPicker是 Dialog 中使用的组件

EditText mInputText = binding.numberPicker.findViewById(Resources.getSystem().getIdentifier("numberpicker_input","id","android"));

之后你将在里面有 OK 点击监听器,你可以像下面这样编码

 if (mInputText != null){
     int count = Integer.parseInt(mInputText.getText().toString());
     mBinding.tvDisplayAntalCount.setText(String.valueOf(count));
 }
于 2021-06-30T13:25:05.000 回答
0

数字选择器对话框

    public class NumberPickerDialog extends DialogFragment {
    private NumberPicker.OnValueChangeListener valueChangeListener;
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        NumberPicker numberPicker = new NumberPicker(getActivity());
        numberPicker.setMinValue(1);
        numberPicker.setMaxValue(10);
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("Default NumberPicker");
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                valueChangeListener.onValueChange(numberPicker,
                        numberPicker.getValue(), numberPicker.getValue());
            }
        });
        builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                valueChangeListener.onValueChange(numberPicker,
                        numberPicker.getValue(), numberPicker.getValue());
            }
        });
        builder.setView(numberPicker);
        return builder.create();
    }
    public NumberPicker.OnValueChangeListener getValueChangeListener() {
        return valueChangeListener;
    }
    public void setValueChangeListener(NumberPicker.OnValueChangeListener valueChangeListener) {
        this.valueChangeListener = valueChangeListener;
    }
}

主要活动

    public class MainActivity extends AppCompatActivity implements NumberPicker.OnValueChangeListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.numberpicker);
    }

    @Override
    public void onValueChange(NumberPicker numberPicker, int i, int i1) {
        Toast.makeText(this,
                "selected number " + numberPicker.getValue(), Toast.LENGTH_SHORT).show();
    }

    public void showNumberPicker(View view){
        NumberPickerDialog newFragment = new NumberPickerDialog();
        newFragment.setValueChangeListener(this);
        newFragment.show(getSupportFragmentManager(), "time picker");
    }
}
于 2021-06-30T10:19:59.097 回答