我在对话框中使用了材料NumberPicker
,并且在打开对话框时遇到了一个问题,用户可以在其中手动输入任何数字(从 1 到 10)NumberPicker
并从对话框中按下“确定”按钮然后没有得到输入的正确值NumberPicker
但它返回如果在 1 到 10 之间滚动并按下“确定”按钮,则值正确。
[
我在对话框中使用了材料NumberPicker
,并且在打开对话框时遇到了一个问题,用户可以在其中手动输入任何数字(从 1 到 10)NumberPicker
并从对话框中按下“确定”按钮然后没有得到输入的正确值NumberPicker
但它返回如果在 1 到 10 之间滚动并按下“确定”按钮,则值正确。
[
我有同样的问题,做了代码你可以检查下面的代码
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));
}
数字选择器对话框
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");
}
}