android - 如何处理android运行时错误

时间:2011-07-05 12:11:32

标签: android

当我的应用程序运行时,我得到了android运行时错误java.lang.IndexOutOfBoundsException。如何处理?

以下是我的堆栈跟踪:

07-05 17:34:31.906: ERROR/AndroidRuntime(657): Uncaught handler: thread main exiting due to uncaught exception
07-05 17:34:31.937: ERROR/AndroidRuntime(657): java.lang.IndexOutOfBoundsException
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at java.util.LinkedList.get(LinkedList.java:453)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at com.ibkr.roadbrake.RB_UpcomingExits$UpcomingResultsListViewAdapter2.getView(RB_UpcomingExits.java:2232)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at com.ibkr.roadbrake.RB_UpcomingExits$8.onClick(RB_UpcomingExits.java:3921)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.view.View.performClick(View.java:2364)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.view.View.onTouchEvent(View.java:4179)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.view.View.dispatchTouchEvent(View.java:3709)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:852)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.os.Looper.loop(Looper.java:123)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at android.app.ActivityThread.main(ActivityThread.java:4363)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at java.lang.reflect.Method.invokeNative(Native Method)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at java.lang.reflect.Method.invoke(Method.java:521)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
07-05 17:34:31.937: ERROR/AndroidRuntime(657):     at dalvik.system.NativeStart.main(Native Method)

5 个答案:

答案 0 :(得分:0)

这意味着您正在尝试访问数组中超出限制的项目。也就是说你试图访问5元素列表中的第6个元素。

希望这是有道理的,除非你发布一些我无法帮助你的代码......

答案 1 :(得分:0)

IndexOutOfBoundsException意味着您正在尝试访问不存在的数组(或List)中的元素。这是一个例子:

    int[] array = {0,1,2};
    Log.v("Name", array[5]);

此示例代码尝试访问数组的第六个元素,但只存在三个元素。

在StackTrace中搜索您的类和函数,这会导致错误,然后检查您获取异常的原因。

答案 2 :(得分:0)

所以......在适配器的getCount方法中......执行此操作

public int getCount(){

  int size = 1;
  if(arralyst !=null){

    size = arraylist.size();
  }  
  return size;
}

答案 3 :(得分:0)

如果列表中有页眉或页脚视图,请不要忘记在UpcomingResultsListViewAdapter2中获取项目时调整点击位置。

答案 4 :(得分:0)

除了显而易见的 - 显式访问不存在的索引 - 当您在List上迭代并在循环中删除元素时,通常会发生此错误:

for (Foo foo : list) {
    if (isBar(foo)) {
        list.remove(foo);
    }
}

迭代器不知道更改,它可以抛出异常。