我在 crashlytics 中遇到随机崩溃,但无法模拟它。它在 Android V2 和 V4 上都会随机崩溃,但是非常非常罕见:
java.lang.IndexOutOfBoundsException: Invalid index 3, size is 0
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
at java.util.ArrayList.get(ArrayList.java:311)
at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:225)
at android.widget.AbsListView.obtainView(AbsListView.java:1498)
at android.widget.ListView.makeAndAddView(ListView.java:1749)
at android.widget.ListView.fillSpecific(ListView.java:1294)
at android.widget.ListView.layoutChildren(ListView.java:1580)
at android.widget.AbsListView.onLayout(AbsListView.java:1349)
at android.view.View.layout(View.java:7320)
at android.widget.FrameLayout.onLayout(FrameLayout.java:342)
at android.view.View.layout(View.java:7320)
at android.widget.FrameLayout.onLayout(FrameLayout.java:342)
at android.view.View.layout(View.java:7320)
at android.widget.FrameLayout.onLayout(FrameLayout.java:342)
at android.view.View.layout(View.java:7320)
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:801)
at android.view.View.layout(View.java:7320)
at android.widget.FrameLayout.onLayout(FrameLayout.java:342)
at android.view.View.layout(View.java:7320)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1263)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1137)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1051)
at android.view.View.layout(View.java:7320)
at android.widget.FrameLayout.onLayout(FrameLayout.java:342)
at android.view.View.layout(View.java:7320)
at android.widget.FrameLayout.onLayout(FrameLayout.java:342)
at android.view.View.layout(View.java:7320)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1162)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1882)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3701)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624)
at dalvik.system.NativeStart.main(NativeStart.java)
索引 3 无效,大小为 0- 索引在 crashlytics 中是随机的。
我在片段中使用带有页眉和页脚的 ListView 。
In 创建视图时:
mSearchBox = inflater.inflate(R.layout.search_box, mListView, false);
mListView.addHeaderView(mSearchBox, null, false);
mListView.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged();
我使用 ListView 中的标题作为 EditText 在 ListView 中进行搜索(特意是因为我希望 EditText 可以随列表视图内容一起滚动)。我还使用 addFooterView 来显示加载程序(当加载列表中的下一个项目时)。
您可以查看 HeaderViewListAdapter 第 225 行(GrepCode http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.4.4_r1/android/widget/HeaderViewListAdapter.java/#224):
public View getView(int position, View convertView, ViewGroup parent) {
// ...
// ... code
// ...
// Footer (off-limits positions will throw an IndexOutOfBoundsException)
return mFooterViewInfos.get(adjPosition - adapterCount).view;
}
EDIT:我找到了类似的 stackoverflow 线程,但这对我没有帮助:列表视图的索引越界异常 https://stackoverflow.com/questions/6950069/indexoutofboundsexception-with-listview看起来 android ListView 在使用带有片段的 ListView 中的页眉或页脚时有点问题。