这对我来说没有意义,我从某些代码中获取索引超出范围的异常,该代码从服务器获取并拆分响应以确定用户帐户详细信息和帐户类型。
崩溃报告(原因):
07-06 12:11:30.602 2376-2376/lsa1314.com.zip E/AndroidRuntime: FATAL EXCEPTION: main
Process: lsa1314.com.zip, PID: 2376
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at lsa1314.com.zip.loggedInDefault$2.onResponse(loggedInDefault.java:130)
at lsa1314.com.zip.loggedInDefault$2.onResponse(loggedInDefault.java:120)
at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
现在很明显,这是告诉我基于上面报告中所述的130左右的线条,我得到一个数组索引超出范围的异常。这似乎指向从服务器拆分响应行。
//Split lines to separate response
String[] responseSplitter = response.split(":");
String firstName = responseSplitter[0];
String surname = responseSplitter[1];
String accType = responseSplitter[2];
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
prefs.edit().putString("first_name", firstName).commit();
prefs.edit().putString("surname", surname).commit();
prefs.edit().putString("account_type", accType).commit();
这个错误通常是在没有索引[1,2,3等]并且我试图访问它时引起的。唯一令我困惑的是,所述索引在手机上运行得很好但在平板电脑上却不行吗?
我在2个nexus仿真器中尝试这个,手机可以工作但不是平板电脑。 上述错误是平板电脑产生的错误。
我怀疑它是否相关但我会在服务器端包含PHP返回到设备的内容,这是需要的:
echo json_encode($firstName . ":" . $surname . ":" . $account_type);