當我鍵入第一個數字時,我的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)」
任何人都得到了我一個提示?