问题
采用ArrayList.get(i)访问第I个元素, android studio控制台报错
详细问题
2022-09-27 11:33:27.880 29305-29305/com.example.electronicmall E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.electronicmall, PID: 29305
java.lang.IndexOutOfBoundsException: Index: 4, Size: 0
at java.util.ArrayList.get(ArrayList.java:437)
at com.example.electronicmall.test.SuperAdmin.SuperAdminReportUserReportingActivity$12$1$1$1$1.run(SuperAdminReportUserReportingActivity.java:691)
at android.os.Handler.handleCallback(Handler.java:900)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8668)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
解决方案
笔者对于第一次控制台报错未敢记录, 事实上, 第一次控制台报错为(由于当时未记录, 该报错是根据第二次报错仿制的还原的,重点关注 Index: 3, Size: 0)
2022-09-27 11:33:27.880 29305-29305/com.example.electronicmall E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.electronicmall, PID: 29305
java.lang.IndexOutOfBoundsException: Index: 3, Size: 0
at java.util.ArrayList.get(ArrayList.java:437)
at com.example.electronicmall.test.SuperAdmin.SuperAdminReportUserReportingActivity$12$1$1$1$1.run(SuperAdminReportUserReportingActivity.java:691)
at android.os.Handler.handleCallback(Handler.java:900)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8668)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
由于第一次控制台报错过于滑稽, ArrayList容量为0, 但是ArrayList.get(3)时才进行报错, 笔者感到莫名奇妙, 有一次运行程序, 报错如下
2022-09-27 11:33:27.880 29305-29305/com.example.electronicmall E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.electronicmall, PID: 29305
java.lang.IndexOutOfBoundsException: Index: 4, Size: 0
at java.util.ArrayList.get(ArrayList.java:437)
at com.example.electronicmall.test.SuperAdmin.SuperAdminReportUserReportingActivity$12$1$1$1$1.run(SuperAdminReportUserReportingActivity.java:691)
at android.os.Handler.handleCallback(Handler.java:900)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8668)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1109)
这次, Index: 4, Size: 0, 笔者感到更为莫名奇妙, 程序是如何骗过编译器执行下标为0, 1 , 2, 3的操作呢
为此, 笔者进行输出,了解程序是如何骗过编译器执行下标为0, 1 , 2, 3的操作
但是, 对于下一次执行(即第三次只执行),程序恢复正常
原因
笔者一直尚未找到原因, 因此将问题产生, 解决经历分享与诸位, 诸位大佬若知道原因, 求解答
原创不易
转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈