Android索引超出边界错误,堆栈跟踪中没有应用程序代码

Dra*_*ken 25 android listview

这是堆栈跟踪:

java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
    at java.util.ArrayList.get(ArrayList.java:311)
    at android.widget.HeaderViewListAdapter.isEnabled(HeaderViewListAdapter.java:164)
    at android.widget.ListView.dispatchDrawWithExcessScroll_Default(ListView.java:3354)
    at android.widget.ListView.dispatchDraw(ListView.java:3054)
    at android.view.View.draw(View.java:6936)
    at android.widget.AbsListView.draw(AbsListView.java:3022)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
    at android.view.View.draw(View.java:6936)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
    at android.view.View.draw(View.java:6936)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1646)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
    at android.view.ViewGroup.drawChild(ViewGroup.java:1644)
    at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1373)
    at android.view.View.draw(View.java:6936)
    at android.widget.FrameLayout.draw(FrameLayout.java:357)
    at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1904)
    at android.view.ViewRoot.draw(ViewRoot.java:1527)
    at android.view.ViewRoot.performTraversals(ViewRoot.java:1263)
    at android.view.ViewRoot.handleMessage(ViewRoot.java:1865)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:3687)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

我完全不知道如何重现这个错误.我已经尝试ListView在我的应用程序上随机点击,并且永远无法重现此错误.

这只发生在应用程序发布到市场之后.我以前从未见过这个错误.

最糟糕的是它没有来自我的应用程序的代码所以我甚至不知道用户在发生这种情况时做了什么.

有没有人见过这种错误?

有没有人知道从哪里开始修复这个?

Lor*_*rte 15

我也在运行Lollipop的Nexus 5上遇到了同样的例外.如果我:

  • 显示列表时拔下设备插头
  • 让设备入睡
  • 将设备重新插入,导致列表内容刷新

添加一个虚拟页脚没有解决它,它只是将错误更改为Invalid index 1, size is 1:) ...但是由于@AlexD我有一个线索,在哪里寻找变通方法.

在我的情况下list.setFooterDividersEnabled(false),成功创建ListView后调用可以防止崩溃发生.


Ale*_*exD 12

当listview为空时我有同样的错误.看完源代码后,我发现了崩溃的行:

return mFooterViewInfos.get(adjPosition - adapterCount).isSelectable
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,没有检查mFooterViewInfos是否为空,所以我对此问题的解决方法只是添加一个虚拟页脚:

list.addFooterView(new View(context, null, false));
Run Code Online (Sandbox Code Playgroud)

  • 你的意思是`list.addFooterView(new View(ctx),null,false);` (4认同)

小智 5

如果您在三星手机上运行此功能,请查看此StackOverflow问答:

在Froyo上ListView随机IndexOutOfBoundsException