2015-02-09 52 views
-3

嗨,在我的Android應用程序中,我需要根據日期在列表視圖中顯示一些詳細信息。當你打開應用程序時,它會獲得最近十天的數據並顯示該數據。這個應用程序在幾天後工作正常,但現在它顯示一些致命的異常,我再次檢查我的代碼,我無法找到任何錯誤。在Android應用程序中出現索引超出限制的異常

,並且錯誤是

02-09 12:37:11.399: E/AndroidRuntime(25430): FATAL EXCEPTION: main 
02-09 12:37:11.399: E/AndroidRuntime(25430): Process: com.imaginet.everwinmatriculation, PID: 25430 
02-09 12:37:11.399: E/AndroidRuntime(25430): java.lang.StringIndexOutOfBoundsException: length=802; regionStart=306; regionLength=-277 
02-09 12:37:11.399: E/AndroidRuntime(25430): at java.lang.String.startEndAndLength(String.java:504) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at java.lang.String.substring(String.java:1333) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at com.imaginet.everwinmatriculation.EventsFragment$5.onResponse(EventsFragment.java:284) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at com.imaginet.everwinmatriculation.EventsFragment$5.onResponse(EventsFragment.java:1) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:65) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at android.os.Handler.handleCallback(Handler.java:739) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at android.os.Handler.dispatchMessage(Handler.java:95) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at android.os.Looper.loop(Looper.java:135) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at android.app.ActivityThread.main(ActivityThread.java:5312) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at java.lang.reflect.Method.invoke(Native Method) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at java.lang.reflect.Method.invoke(Method.java:372) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 
02-09 12:37:11.399: E/AndroidRuntime(25430): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 

而且代碼:

+1

就像它說的,你的代碼試圖訪問一個數組元素索引,而不是以 – 2015-02-09 07:44:26

+0

開頭,你可以說如何解決這個問題? – IndependentDev 2015-02-09 07:45:25

+2

使用foreach循環 – wadali 2015-02-09 07:45:44

回答

2

在行

while(strDescrip.contains("&")) 
        strDescrip = strDescrip.replace(strDescrip.substring(strDescrip.indexOf("&"),strDescrip.indexOf(";")+1),""); 
while(strDescrip.contains("<")) 
        strDescrip = strDescrip.replace(strDescrip.substring(strDescrip.indexOf("<"),strDescrip.indexOf(">")+1),""); 

您檢查strDescrip.contains("&"),但不檢查strDescrip.contains(";"),同與<>