ArrayIndexOutOfBoundsException in ListPreference



我的Play-Console中有一个奇怪的StackTrace-我无法重现该问题,它不是直接源自我的代码。也许这里有人对如何处理这个问题有一个想法,而不仅仅是忽略它。虽然只发生过一次 - 但我真的很想知道那里发生了什么。

java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
    at android.preference.ListPreference.getEntry(ListPreference.java:203)
    at android.preference.ListPreference.getSummary(ListPreference.java:148)
    at android.preference.Preference.onBindView(Preference.java:522)
    at android.preference.Preference.getView(Preference.java:460)
    at android.preference.PreferenceGroupAdapter.getView(PreferenceGroupAdapter.java:221)
    at android.widget.AbsListView.obtainView(AbsListView.java:2308)
    at android.widget.ListView.makeAndAddView(ListView.java:2030)
    at android.widget.ListView.fillDown(ListView.java:822)
    at android.widget.ListView.fillFromTop(ListView.java:883)
    at android.widget.ListView.layoutChildren(ListView.java:1848)
    at android.widget.AbsListView.onLayout(AbsListView.java:2136)
    at android.view.View.layout(View.java:14177)
    at android.view.ViewGroup.layout(ViewGroup.java:4399)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
    at android.view.View.layout(View.java:14177)
    at android.view.ViewGroup.layout(ViewGroup.java:4399)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
    at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1652)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1436)
    at android.view.View.layout(View.java:14177)
    at android.view.ViewGroup.layout(ViewGroup.java:4399)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
    at android.view.View.layout(View.java:14177)
    at android.view.ViewGroup.layout(ViewGroup.java:4399)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
    at android.view.View.layout(View.java:14177)
    at android.view.ViewGroup.layout(ViewGroup.java:4399)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1663)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1521)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
    at android.view.View.layout(View.java:14177)
    at android.view.ViewGroup.layout(ViewGroup.java:4399)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
    at android.view.View.layout(View.java:14177)
    at android.view.ViewGroup.layout(ViewGroup.java:4399)
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2244)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2017)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1190)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4860)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:766)
    at android.view.Choreographer.doCallbacks(Choreographer.java:575)
    at android.view.Choreographer.doFrame(Choreographer.java:542)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:751)
    at android.os.Handler.handleCallback(Handler.java:725)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:158)
    at android.app.ActivityThread.main(ActivityThread.java:5751)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
    at dalvik.system.NativeStart.main(Native Method)

我假设您正在使用 PreferenceActivity 或 PreferenceFragment(Compat)

似乎您在首选项XML文件中定义ListPpreferences参数时缺少一些内容,我相信你的android:entry和android:entryValues的大小不匹配。

通常java.lang.ArrayIndexOutOfBoundsException:当您尝试访问 arraylist 的边界较大或不在边界(超出大小)内时,都会发生错误。

因此,从错误显示java.lang.ArrayIndexOutOfBoundsException: length=3; index=3,有时会发生您尝试访问大于数组大小的值的情况。由于您的 arraylist 仅包含总共 3 条记录,您可能正在尝试访问 3 位置的索引。而数组从索引"0"开始计算其值,所以会有像0,1,2...这样的值,所以在这种情况下,它将无法获取索引"3"处的值不可用。

所以"java.lang.ArrayIndexOutOfBoundsException: length=3; index=3".这意味着您请求的索引超出了数组的边界。换句话说,数组有一个长度(它是边界)。当它的长度为 3(它是空的)并且您请求第 3 个元素时,数组会告诉您请求的项目不可用,因为数组甚至不是 3 元素长。

最新更新