NumberPicker value not getting if entered custom input number

291 Views Asked by At

I have used Material NumberPicker in Dialog and I have faced an issue while dialog opened and user can enter any number manually (From 1 to 10) in NumberPicker and Pressed "OK" button from Dialog then didn't get correct value as entered in NumberPicker but it return correct value if scroll between 1 to 10 and Pressed "Ok" button.

[Enter custom number1

2

There are 2 best solutions below

0
Ganesh MB On

NumberPickerDialog

    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;
    }
}

MainActivity

    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");
    }
}
0
MEHUL On

I have same problem and did the code you can check the code below

numberPicker is the component is used in Dialog

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

and after that you will have OK click listener inside that you can code like below

 if (mInputText != null){
     int count = Integer.parseInt(mInputText.getText().toString());
     mBinding.tvDisplayAntalCount.setText(String.valueOf(count));
 }