【问题标题】:NumberPicker value not getting if entered custom input number如果输入自定义输入数字,NumberPicker 值不会得到
【发布时间】:2021-06-30 10:10:20
【问题描述】:

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

[

【问题讨论】:

  • 请提供创建此对话框并使用结果的代码
  • @Zachary 你可以查看这个链接pastebin.com/MyjtATwp

标签: android material-design android-number-picker


【解决方案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));
 }

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-12
      相关资源
      最近更新 更多