数组索引超出绑定异常

时间:2014-09-17 09:56:15

标签: android indexoutofboundsexception

实际上我正在扫描QR码,如果我传递完整信息以生成QR然后扫描它,它工作正常,但如果不插入完整数据生成QR然后扫描该QR,我的应用程序崩溃。我添加了日志报告以及崩溃的代码。我刚刚插入了name和tel3来生成QR,当我扫描它时,它崩溃了

scanDataLength = scanData.length();
parts = scanData.split(":");                
semiColons = scanData.split(";");
qrCodeType = parts[0];
if (qrCodeType.contentEquals("MECARD")) {
    String name = semiColons[0].split(":")[2];
    String adr = semiColons[1].split(":")[1];
    String tel = semiColons[2].split(":")[1];
    String tel2 = semiColons[3].split(":")[1];
    String tel3 = semiColons[4].split(":")[1];
    String email = semiColons[5].split(":")[1];
    String email2 = semiColons[6].split(":")[1];
    String url = semiColons[7].split(":")[1];
    String notes = semiColons[8].split(":")[1];
    saveContact(name, adre, tel, tel2, tel3, email, email2, url, notes);
}

日志

09-17 14:46:04.369: E/AndroidRuntime(12417): FATAL EXCEPTION: main
09-17 14:46:04.369: E/AndroidRuntime(12417): java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
09-17 14:46:04.369: E/AndroidRuntime(12417):    at com.gravity.innovations.qr.manager.ScanQRActivity$2.onPreviewFrame(ScanQRActivity.java:299)
09-17 14:46:04.369: E/AndroidRuntime(12417):    at android.hardware.Camera$EventHandler.handleMessage(Camera.java:786)
09-17 14:46:04.369: E/AndroidRuntime(12417):    at android.os.Handler.dispatchMessage(Handler.java:99)
09-17 14:46:04.369: E/AndroidRuntime(12417):    at android.os.Looper.loop(Looper.java:137)
09-17 14:46:04.369: E/AndroidRuntime(12417):    at android.app.ActivityThread.main(ActivityThread.java:5039)
09-17 14:46:04.369: E/AndroidRuntime(12417):    at java.lang.reflect.Method.invokeNative(Native Method)
09-17 14:46:04.369: E/AndroidRuntime(12417):    at java.lang.reflect.Method.invoke(Method.java:511)
09-17 14:46:04.369: E/AndroidRuntime(12417):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
09-17 14:46:04.369: E/AndroidRuntime(12417):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
09-17 14:46:04.369: E/AndroidRuntime(12417):    at dalvik.system.NativeStart.main(Native Method)
09-17 14:46:05.588: I/Process(12417): Sending signal. PID: 12417 SIG: 9

2 个答案:

答案 0 :(得分:0)

.split(":")[2];

ArrayIndexOutOfBoundsException: length=2; index=2

因此,您只有0和1作为有效索引

答案 1 :(得分:0)

问题与您的数据长度

有关
String name = semiColons[0].split(":")[2];

您的semiColons [0]行中没有2列,因此您需要通过在“:”之后添加内容或通过将索引从2更改为1或0来解决此问题