当前位置: 代码迷 >> Android >> Andriod Runtime报错求解!解决方案
  详细解决方案

Andriod Runtime报错求解!解决方案

热度:148   发布时间:2016-05-01 18:03:40.0
Andriod Runtime报错求解!
07-08 10:30:19.604: E/AndroidRuntime(567): FATAL EXCEPTION: main
07-08 10:30:19.604: E/AndroidRuntime(567): java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
07-08 10:30:19.604: E/AndroidRuntime(567): at com.amaker.wlo.LoginActivity.saveUserMsg(LoginActivity.java:85)
07-08 10:30:19.604: E/AndroidRuntime(567): at com.amaker.wlo.LoginActivity.login(LoginActivity.java:70)
07-08 10:30:19.604: E/AndroidRuntime(567): at com.amaker.wlo.LoginActivity.access$1(LoginActivity.java:60)
07-08 10:30:19.604: E/AndroidRuntime(567): at com.amaker.wlo.LoginActivity$2.onClick(LoginActivity.java:49)
07-08 10:30:19.604: E/AndroidRuntime(567): at android.view.View.performClick(View.java:3480)
07-08 10:30:19.604: E/AndroidRuntime(567): at android.view.View$PerformClick.run(View.java:13983)
07-08 10:30:19.604: E/AndroidRuntime(567): at android.os.Handler.handleCallback(Handler.java:605)
07-08 10:30:19.604: E/AndroidRuntime(567): at android.os.Handler.dispatchMessage(Handler.java:92)
07-08 10:30:19.604: E/AndroidRuntime(567): at android.os.Looper.loop(Looper.java:137)
07-08 10:30:19.604: E/AndroidRuntime(567): at android.app.ActivityThread.main(ActivityThread.java:4340)
07-08 10:30:19.604: E/AndroidRuntime(567): at java.lang.reflect.Method.invokeNative(Native Method)
07-08 10:30:19.604: E/AndroidRuntime(567): at java.lang.reflect.Method.invoke(Method.java:511)
07-08 10:30:19.604: E/AndroidRuntime(567): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-08 10:30:19.604: E/AndroidRuntime(567): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-08 10:30:19.604: E/AndroidRuntime(567): at dalvik.system.NativeStart.main(Native Method)


------解决方案--------------------
LoginActivity中85行数组越界,提示很明确:总长度才1,却取到index1

07-08 10:30:19.604: E/AndroidRuntime(567): java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
07-08 10:30:19.604: E/AndroidRuntime(567): at com.amaker.wlo.LoginActivity.saveUserMsg(LoginActivity.java:85)
------解决方案--------------------
这明显是越界了嘛
------解决方案--------------------
Java code
// 根据用户名称密码查询private String query(String account,String password){// 查询参数String queryString = "account="+account+"&password="+password;// urlString url = HttpUtil.BASE_URL+"servlet/LoginServlet?"+queryString;// 查询返回结果return HttpUtil.queryStringForPost(url);  }
------解决方案--------------------
数组越界,应该是你的返回数据有问题,解析的时候,只解析出一部分,可以log后者debug看一下返回的数据
------解决方案--------------------
数组索引超出范围,截取的时候字符串里可能没有你那个分隔符,第一,你可以分割的时候验证一下,第二,可以给你的数组默认一个数值,这样,至少不会报错,然后debug看看,到底是哪个地方数据格式不对就好。android技术群:237305376,新群人不多,欢迎大家的加入~
------解决方案--------------------
明显越界,debug跟踪下
------解决方案--------------------
探讨

貌似不是越界啊,数组更改过了还不行,Debug结果

this LoginActivity (id=830022674824)
id "网络异常!" (id=830026090968)
idx -1
msgs String[1] (id=830026091240)
name "" (id=830012502784)
count 0
hashCode 0
offset 0
……

------解决方案--------------------
出错应该是userEditText.getText()或者pwdEditText.getText()的值为空,

可将以下2行代码改一下

String username = userEditText.getText().toString();
String pwd = pwdEditText.getText().toString();

改成:
String username = null;
String pwd = null;
if(userEditText!=null && userEditText.getText()!=null)
  相关解决方案