【发布时间】:2018-01-19 05:30:16
【问题描述】:
当我在输入第一个数字时将 numberPicker 上的键盘类型更改为“TYPE_CLASS_NUMBER”时,我的 android 应用程序一直在跳动。在不指定键盘类型的情况下同样有效。所以看来键盘变化是问题所在。 代码如下:
public void chooseAmps(View view) {
final NumberPicker numberPicker = new NumberPicker(this);
NumberPicker.Formatter formatter = new PickerFormatter();
//numberPicker.setFormatter(formatter);
numberPicker.setMinValue(0);
numberPicker.setMaxValue(100);
numberPicker.setDisplayedValues(getStringArray(0, 10));
enableNumberPickerManualEditing(numberPicker);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.AmpsMessage)
.setTitle(R.string.AmpsTitle)
.setPositiveButton(R.string.accept, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d("UI", String.valueOf(numberPicker.getValue()));
double currentDesired = numberPicker.getValue() / 10.0;
charger.setCurrentDesired(currentDesired);
Log.d("UI", String.valueOf(charger.getCurrentDesired()));
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setView(numberPicker);
AlertDialog dialog = builder.create();
dialog.show();
}
String[] getStringArray(double begin, double end) {
String[] stringArray = new String[(int) ((end - begin) * 10)+1];
double number = begin;
for (int i = 0; i < (int) ((end - begin) * 10+1); i++) {
stringArray[i] = String.format("%.1f", number);
number += 0.1;
}
Log.d("UI", String.valueOf(number));
return stringArray;
}
public static void enableNumberPickerManualEditing(NumberPicker numPicker) {
int childCount = numPicker.getChildCount();
for (int i = 0; i < childCount; i++) {
View childView = numPicker.getChildAt(i);
if (childView instanceof EditText) {
EditText editText = (EditText) childView;
editText.setInputType(InputType.TYPE_CLASS_NUMBER);
return;
}
}
}
}
这里的崩溃消息:
"进程:com.jacobi.mario.charger,PID:28169 java.lang.IndexOutOfBoundsException: setSpan (3 ... 3) 结束 长度 2 在 android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1320) 在 android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:683) 在 android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:676) 在 android.text.Selection.setSelection(Selection.java:78) 在 android.widget.EditText.setSelection(EditText.java:96) 在 android.widget.NumberPicker$SetSelectionCommand.run(NumberPicker.java:2278) 在 android.os.Handler.handleCallback(Handler.java:751) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:154) 在 android.app.ActivityThread.main(ActivityThread.java:6236) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781)"
有人给我小费吗?
【问题讨论】:
标签: android