我试图制作一个两位数选择器(screenshot),左边是十进制,右边是逗号。尝试将coma值从numberPicker类传递给活动应用程序时,我陷入了困境。因为在我的Activity上实现的OnValueChange仅捕获一个值。而不是获得左选择器值和右选择器值,我只有一个值。
我的NumberPicker代码
private NumberPicker.OnValueChangeListener numberChangeListener;
private NumberPicker.OnValueChangeListener comaChangeListener;
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Atur Durasi Pemberian Pakan");
builder.setMessage("Pilih angka :");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
numberChangeListener.onValueChange(numberPicker,
numberPicker.getValue(), numberPicker.getValue());
comaChangeListener.onValueChange(comaPicker,
comaPicker.getValue(), comaPicker.getValue());
}
});
builder.setView(linearLayout);
return builder.create();
}
public NumberPicker.OnValueChangeListener getNumberChangeListener() {
return numberChangeListener;
}
public void setValueChangeListener(NumberPicker.OnValueChangeListener numberChangeListener, NumberPicker.OnValueChangeListener comaChangeListener) {
this.numberChangeListener = numberChangeListener;
this.comaChangeListener = comaChangeListener;
}
}
我的活动代码
@Override
public void onValueChange(NumberPicker numberPicker, int i, int i1) {
DecimalFormat decimalFormat = new DecimalFormat("#.##");
dTime = numberPicker.getValue() + comaPicker.getValue() / 10;
tVDurasi1.setText(dTime + " detik");
dBerat = dTime * qBerat;
eTBerat1.setText(decimalFormat.format(dBerat) + " g");
谢谢
我终于找到了解决方案!本教程说明:https://codinginflow.com/tutorials/android/custom-dialog-interface