Cómo resolver StringIndexOutOfBoundsException en android
Este es mi informe logcat:
java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=2 at java.lang.String.startEndAndLength(String.java:583) at java.lang.String.substring(String.java:1464) at com.buzzador.profile.getValidPhoneNumber(profile.java:1966) at com.buzzador.profile.setDataForServer(profile.java:1717) at com.buzzador.profile$5.onClick(profile.java:236) at android.view.View.performClick(View.java:4377) at android.view.View$PerformClick.run(View.java:18044) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5306) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) at dalvik.system.NativeStart.main(Native Method)
Y creo que el problema está en esta función:
- ¿Cómo puedo importar una biblioteca de Android y usarla tanto en el código de producción como en las pruebas?
- Opencv Android: java.lang.UnsatisfiedLinkError: dlopen falló: no se pudo cargar la librería "libopencv_java.so"
- Android Threading: Esta clase de Handler debe ser estática o pueden producirse fugas
- Java - Android - Split Activity / Class en varios archivos para una mejor organización (solución)
- Dispositivo Android (excepto la nota de galaxia 2) no puede obtener paquetes UDP
public String getValidPhoneNumber (String phoneNumber, String country) { String csValidPhoneNumber = ""; phoneNumber = getPhoneNumberWithoutReqularExpresions(phoneNumber); phoneNumber = phoneNumber.replaceFirst ("^0*", ""); String csCountryCode = getCountryCode(country); String csAppendedCode = phoneNumber.substring(0, csCountryCode.length()); if(csAppendedCode.equals(csCountryCode)) { csValidPhoneNumber = "+" + phoneNumber; return csValidPhoneNumber; } csValidPhoneNumber = "+" + csCountryCode + phoneNumber; return csValidPhoneNumber; }
- Android: varios appWidgets que reproducen diferentes sonidos
- Android Volley PUT solicitud
- Android: Parcelable.writeToParcel y Parcelable.Creator.createFromParcel nunca se llaman
- Generador de caracteres aleatorios con un rango de (A..Z, 0..9) y puntuación
- Biblioteca no encontrada debido a targetSdkVersion (armeabi-v7a y libcryptopp.so)
- ¿Cómo puedo depurar el consumo de memoria RAM de mi aplicación Android en tiempo de ejecución?
- Invocar una llamada de escucha programáticamente en android
- Fragmento de configuración de Android
¿Está seguro de que phoneNumber
no es igual a ""
? Usted tiene que comprobar que phoneNumber
tiene más caracteres que el csCountryCode.length()
.
String csAppendedCode = phoneNumber.length() > csCountryCode.length() ? phoneNumber.substring(0, csCountryCode.length()) : "";
El último índice de una String
es string.length()-1
pero está intentando acceder al índice con string.length()
que no existe, por eso está recibiendo esta excepción …
java.lang.StringIndexOutOfBoundsException: length=0; regionStart=0; regionLength=2
Ahora, debe cambiar esta línea …
String csAppendedCode = phoneNumber.substring(0, csCountryCode.length());
a esto…
String csAppendedCode = phoneNumber.substring(0, csCountryCode.length()-1);
- Mejor herramienta de desarrollo multiplataforma para iPhone y Android
- Android: pasando parámetros a una pestaña