当我键入第一个数字时,我的numberPicker上的键盘类型更改为“TYPE_CLASS_NUMBER”时,我的Android应用程序保持chrashing。没有指定键盘类型的同样作品。所以看起来键盘改变是问题。 下面的代码:崩溃NumberPicker,更改键盘类型
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) at android.widget.NumberPicker $ SetSelectionCommand.run(NumberPicker.java:2278) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at 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)”
任何人都得到了我一个提示?