gpt4 book ai didi

android - 在堆栈跟踪中没有应用程序代码的 ListView 中滚动时的 IndexOutOfBounds

转载 作者:行者123 更新时间:2023-11-29 21:49:49 24 4
gpt4 key购买 nike


我发现了一些类似的问题,但无论指出什么问题似乎都不适用于此处。
我有一个带有 MatrixCursor 和 SimpleCursorAdapter 作为数据提供者的 ListView。只有一种列表项样式,没有页眉或页脚等。当我在列表中快速上下滚动时,可能只有当弹跳到列表顶部时,有时我会收到 IndexOutOfBounds 异常,但堆栈跟踪中没有我的任何应用程序代码。所以我连它都抓不住。
这在 Huawei Ideos U8510/Android 2.3.3 和 Acer Iconia Tab A510/Android 4.1.2 上发生(至少经过测试)。
任何想法如何修复或规避表示赞赏。
T.i.a.

02-05 10:17:12.980: E/AndroidRuntime(1517): FATAL EXCEPTION: main
02-05 10:17:12.980: E/AndroidRuntime(1517): java.lang.ArrayIndexOutOfBoundsException
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.view.MotionEvent.getY(MotionEvent.java:903)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.widget.AbsListView.onTouchEvent(AbsListView.java:2189)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.widget.ListView.onTouchEvent(ListView.java:3486)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.view.View.dispatchTouchEvent(View.java:3885)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:903)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942)
02-05 10:17:12.980: E/AndroidRuntime(1517): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1693)
02-05 10:17:12.980: E/AndroidRuntime(1517): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1125)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.app.Activity.dispatchTouchEvent(Activity.java:2096)
02-05 10:17:12.980: E/AndroidRuntime(1517): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1677)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2257)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.view.ViewRoot.handleMessage(ViewRoot.java:1881)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.os.Handler.dispatchMessage(Handler.java:99)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.os.Looper.loop(Looper.java:123)
02-05 10:17:12.980: E/AndroidRuntime(1517): at android.app.ActivityThread.main(ActivityThread.java:3695)
02-05 10:17:12.980: E/AndroidRuntime(1517): at java.lang.reflect.Method.invokeNative(Native Method)
02-05 10:17:12.980: E/AndroidRuntime(1517): at java.lang.reflect.Method.invoke(Method.java:507)
02-05 10:17:12.980: E/AndroidRuntime(1517): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
02-05 10:17:12.980: E/AndroidRuntime(1517): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
02-05 10:17:12.980: E/AndroidRuntime(1517): at dalvik.system.NativeStart.main(Native Method)

最佳答案

我已经通过重新实现 ListView.onTouchEvent() 修复了它。我想我会分享代码:

public class MyListView extends ListView 
{

public MyListView(Context context)
{
super(context);
}

public MyListView(Context context, AttributeSet attrs)
{
super(context, attrs);
}

public MyListView(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}

@Override public boolean onTouchEvent(MotionEvent ev)
{
try { return super.onTouchEvent(ev); }
catch(ArrayIndexOutOfBoundsException e)
{
Log.w("Catched ArrayIndexOutOfBoundsException");
return true; // handled
}
}
}

您必须在 layout.xml 文件中使用 而不是

关于android - 在堆栈跟踪中没有应用程序代码的 ListView 中滚动时的 IndexOutOfBounds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14704408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com