1

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

Anand
  • 857
  • 1
  • 12
  • 18
Pratik Dodiya
  • 2,337
  • 1
  • 19
  • 12

2 Answers2

1

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));
 }
Pratik Dodiya
  • 2,337
  • 1
  • 19
  • 12
MEHUL
  • 39
  • 5
0

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");
    }
}
Ganesh MB
  • 1,109
  • 2
  • 14
  • 27