标签: indexoutofboundsexception

由于 Lazycolumn Jetpack compose 中的 IndexOutOfBoundsException 导致应用程序崩溃

当我删除 mutableStateListOf 中的项目时,我收到 IndexOutOfBoundsException,其中 MyType 是某种自定义类型。myList 中有大约 250 项。这些项目将循环删除。几乎 6 个元素同时在视口中可见。当项目计数达到小于或等于 6(滚动位置位于顶部)时,会引发此异常并且应用程序崩溃。

此外,仅当 Listview 为活动屏幕时应用程序才会崩溃。否则它不会崩溃/不会引发此索引出界异常。我已经调试了应用程序逻辑,并确保进行检查以忽略索引大于列表大小的任何更新/添加/删除请求。我怀疑仅在重组期间引发异常。我观察到的另一个行为是,当列表滚动到底部并且项目被删除时,则在循环的最开始就已经引发了此异常。请查看堆栈跟踪。

FATAL EXCEPTION: main Process: com.XXX.YYY.ZZZ, PID: 16225 java.lang.IndexOutOfBoundsException: Index 6, size 6 at androidx.compose.foundation.lazy.layout.MutableIntervalList.checkIndexBounds(IntervalList.kt:177) at androidx.compose.foundation.lazy.layout.MutableIntervalList.get(IntervalList.kt:160) at androidx.compose.foundation.lazy.layout.DefaultLazyLayoutItemsProvider.getKey(LazyLayoutItemProvider.kt:232) at androidx.compose.foundation.lazy.LazyListItemProviderImpl.getKey(Unknown Source:2) at androidx.compose.foundation.lazy.layout.DefaultDelegatingLazyLayoutItemProvider.getKey(LazyLayoutItemProvider.kt:201) at androidx.compose.foundation.lazy.LazyListItemProviderKt$rememberLazyListItemProvider$1$1.getKey(Unknown Source:2) at androidx.compose.foundation.lazy.LazyMeasuredItemProvider.getAndMeasure-ZjPyQlc(LazyMeasuredItemProvider.kt:46) at androidx.compose.foundation.lazy.LazyListMeasureKt.measureLazyList-Hh3qtAg(LazyListMeasure.kt:164) at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke-0kLqBqw(LazyList.kt:299) at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.invoke(LazyList.kt:190) at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$1$2$1.invoke-0kLqBqw(LazyLayout.kt:71) at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$1$2$1.invoke(LazyLayout.kt:69) at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:598) at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:103) at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:635) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:155) at androidx.compose.foundation.layout.SizeModifier.measure-3p2s80s(Size.kt:781) at androidx.compose.ui.node.BackwardsCompatNode.measure-3p2s80s(BackwardsCompatNode.kt:323) at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:155) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1090) at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasure$2.invoke(LayoutNodeLayoutDelegate.kt:1086) at androidx.compose.runtime.snapshots.Snapshot$Companion.observe(Snapshot.kt:2200) at androidx.compose.runtime.snapshots.SnapshotStateObserver$observeReads$1$1.invoke(SnapshotStateObserver.kt:234) at androidx.compose.runtime.snapshots.SnapshotStateObserver$observeReads$1$1.invoke(SnapshotStateObserver.kt:230) at androidx.compose.runtime.SnapshotStateKt__DerivedStateKt.observeDerivedStateRecalculations(DerivedState.kt:341) at …

indexoutofboundsexception compose-recomposition android-jetpack-compose-lazy-column

15
推荐指数
1
解决办法
2135
查看次数

检查Java中的界限

我正在尝试检查数组位置是否超出范围,最简单的方法是什么?

int[] arr;
populate(arr);
if(arr[-1] == null)
//out of bounds!
Run Code Online (Sandbox Code Playgroud)

会这样的吗?

我很确定这可以通过trycatch或扫描仪完成,但对于一个简单的小程序,还有另外一种方法吗?

java arrays indexoutofboundsexception

14
推荐指数
2
解决办法
5万
查看次数

没有出界错误

我在C中有这个代码,它接受了一堆chars

#include<stdio.h> 
# define NEWLINE '\n'
int main()
{

char c;
char str[6];
int i = 0;
while( ((c = getchar()) != NEWLINE))
{
        str[i] = c;
        ++i;
        printf("%d\n", i);
}

return 0;
}
Run Code Online (Sandbox Code Playgroud)

输入是:testtesttest

输出:1 2 3 4 5 6 7 8 117 118 119 120

我的问题是:

  1. 虽然我明显超出了阵列的容量,为什么我不会出现超出界限(分段错误)的异常?

  2. 为什么输出中的数字会突然跳到很大的数字?

我在C++中试过这个并且得到了相同的行为.请问有谁可以解释一下这是什么原因?

c indexoutofboundsexception

12
推荐指数
2
解决办法
2万
查看次数

为什么ArrayIndexOutOfBoundsException不是编译时错误?

有人可以向我解释为什么ArrayIndexOutOfBoundsException是运行时异常而不是编译时错误?在明显的情况下,当索引为负数或大于数组大小时,我不明白为什么它不能是编译时错误.

编辑:特别是在编译时已知数组的大小甚至索引,例如,int[] a = new int[10]; a[-1]=5;这应该是编译错误.

java compilation compile-time indexoutofboundsexception

11
推荐指数
2
解决办法
4433
查看次数

Samsung设备上的IndexOutOfBoundsException

我在Samsung Galaxy S5和Note 3和4上得到了IndexOutOfBoundsException.它没有引用我的代码.有没有遇到过这个?我在这里找不到任何东西.

当尝试长按EditText以粘贴内容时,似乎偶尔会发生这种情况.

编辑:

我正在使用一个简单的EditText字段(不在ListView或Spinner中).有一个约28个字符的提示.我切换经由调焦clearFocus几次,我使用的是setOnEditorActionListenersetOnFocusChangeListener该控制连接到所述活性的片段.

编辑#2:

我已经能够通过尝试长按EditText来尝试粘贴一些内容来成功地重现它.它只发生在EditText中已有文本的情况下,我长按文本的右侧,而不是文本的右侧.此外,EditText必须没有焦点.

通过创建自定义EditText和覆盖某些方法的任何可能的解决方案?

java.lang.IndexOutOfBoundsException: setSpan (11 ... 11) ends beyond length 0
   at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1024)
   at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:594)
   at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:590)
   at android.text.Selection.setSelection(Selection.java:116)
   at android.text.Selection.setSelection(Selection.java:127)
   at android.widget.Editor.performLongClick(Editor.java:1008)
   at android.widget.TextView.performLongClick(TextView.java:10637)
   at android.view.View$CheckForLongPress.run(View.java:19482)
   at android.os.Handler.handleCallback(Handler.java:733)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:146)
   at android.app.ActivityThread.main(ActivityThread.java:5678)
   at java.lang.reflect.Method.invokeNative(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:515)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
   at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)

码:

editText.setOnEditorActionListener(new OnEditorActionListener() {

        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            String searchText = v.getText().toString();

            FragmentSearchList fragmentSearchList …
Run Code Online (Sandbox Code Playgroud)

android indexoutofboundsexception samsung-mobile

11
推荐指数
0
解决办法
2337
查看次数

11
推荐指数
2
解决办法
7282
查看次数

Android - java.lang.IndexOutOfBoundsException:项目位置0(0)无效.项目数:0

我在日志中收到此异常 -

 java.lang.IndexOutOfBoundsException: Invalid item position 0(0). Item count:0
            at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4622)
            at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4617)
            at com.jivemap.app.CustomizedViews.MyLinearLayoutManager.measureScrapChild(MyLinearLayoutManager.java:66)
            at com.jivemap.app.CustomizedViews.MyLinearLayoutManager.onMeasure(MyLinearLayoutManager.java:30)
            at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:2614)
            at android.view.View.measure(View.java:15318)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1413)
            at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1061)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:599)
            at android.view.View.measure(View.java:15318)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1413)
            at android.widget.LinearLayout.measureVertical(LinearLayout.java:704)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:597)
            at android.view.View.measure(View.java:15318)
            at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4816)
            at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1413)
            at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:1061)
            at android.widget.LinearLayout.onMeasure(LinearLayout.java:599)
            at android.view.View.measure(View.java:15318)
            at android.widget.ListView.setupChild(ListView.java:1849)
            at android.widget.ListView.makeAndAddView(ListView.java:1764)
            at android.widget.ListView.fillSpecific(ListView.java:1320)
            at android.widget.ListView.layoutChildren(ListView.java:1635)
            at android.widget.AbsListView.onLayout(AbsListView.java:2141)
            at android.view.View.layout(View.java:13874)
            at android.view.ViewGroup.layout(ViewGroup.java:4364)
            at android.support.v4.widget.SwipeRefreshLayout.onLayout(SwipeRefreshLayout.java:596)
            at android.view.View.layout(View.java:13874)
            at android.view.ViewGroup.layout(ViewGroup.java:4364)
            at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1695)
            at android.view.View.layout(View.java:13874)
            at android.view.ViewGroup.layout(ViewGroup.java:4364)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1672)
            at …
Run Code Online (Sandbox Code Playgroud)

android indexoutofboundsexception target-sdk android-recyclerview android-6.0-marshmallow

11
推荐指数
1
解决办法
3882
查看次数

java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) 在 Android 8.0 的 0 之前开始

问题自从升级到 Android 8.0 以来,我收到许多崩溃报告,指出我的代码之外发生了 IndexOutOfBoundsException。但与另一个问题不同

崩溃报告它似乎是Android本身的一个错误。但我猜它出现在我使用TextView内容中的链接时。

Fatal Exception: java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0
       at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1314)
       at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:680)
       at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:672)
       at android.view.accessibility.AccessibilityNodeInfo.setText(AccessibilityNodeInfo.java:2510)
       at android.widget.TextView.onInitializeAccessibilityNodeInfoInternal(TextView.java:12047)
       at android.view.View.onInitializeAccessibilityNodeInfo(View.java:7958)
       at android.view.View.createAccessibilityNodeInfoInternal(View.java:7917)
       at android.view.View.createAccessibilityNodeInfo(View.java:7902)
       at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:146)
       at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:119)
       at android.view.View.onInitializeAccessibilityEventInternal(View.java:7854)
       at android.widget.TextView.onInitializeAccessibilityEventInternal(TextView.java:12028)
       at android.view.View.onInitializeAccessibilityEvent(View.java:7842)
       at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:7704)
       at android.view.View.sendAccessibilityEventUnchecked(View.java:7689)
       at android.view.View.sendAccessibilityEventInternal(View.java:7666)
       at android.widget.TextView.sendAccessibilityEventInternal(TextView.java:12418)
       at android.view.View.sendAccessibilityEvent(View.java:7633)
       at android.widget.TextView.onSelectionChanged(TextView.java:10559)
       at android.widget.TextView.spanChange(TextView.java:10844)
       at android.widget.TextView$ChangeWatcher.onSpanAdded(TextView.java:14126)
       at android.text.SpannableStringInternal.sendSpanAdded(SpannableStringInternal.java:399)
       at android.text.SpannableStringInternal.setSpan(SpannableStringInternal.java:222)
       at android.text.SpannableStringInternal.setSpan(SpannableStringInternal.java:152)
       at android.text.SpannableString.setSpan(SpannableString.java:46)
       at android.text.Selection.setSelection(Selection.java:78)
       at android.text.method.LinkMovementMethod.onTouchEvent(LinkMovementMethod.java:218)
       at android.widget.TextView.onTouchEvent(TextView.java:11325)
       at android.view.View.dispatchTouchEvent(View.java:12539)
       at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3159)
       at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2786) …
Run Code Online (Sandbox Code Playgroud)

android indexoutofboundsexception

11
推荐指数
1
解决办法
3750
查看次数

IndexOutOfBoundsException:charAt:0> =某些Android版本的长度为0

我正在尝试使用Java和Eclipse来创建应用程序(目前正在使用B4A,但希望扩展我的可用资源,以及创建库的能力)

在尝试使用片段实现对话时,我已经按照此处的示例进行操作.

我一直在

05-06 13:40:21.060: E/SensorManager(18538): thread start
05-06 13:40:21.105: E/Dynamiclayout(18538): java.lang.IndexOutOfBoundsException: charAt: 0 >= length 0
Run Code Online (Sandbox Code Playgroud)

我已经尝试过调试,但调试器永远不会停止任何错误(我是这个调试器的新手,所以不知道如何解决这个问题).

有谁看到引起异常的地方?(只是为了确保它不是任何地方的胖手指,我通过git下载,并尝试了它,并在logcat中收到完全相同的错误)

这是我的mainActivity.java:

package com.example.fragmenttest;
import com.example.fragmenttest.EditNameDialog.EditNameDialogListener;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.Menu;
import android.widget.Toast;

public class MainActivity extends FragmentActivity  implements EditNameDialogListener {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_edit_name);
    showEditDialog();
}

private void showEditDialog() {
    FragmentManager fm = getSupportFragmentManager();
    EditNameDialog editNameDialog = new EditNameDialog();
    editNameDialog.show(fm, "fragment_edit_name");
}

@Override
public void onFinishEditDialog(String inputText) {
    Toast.makeText(this, "Hi, …
Run Code Online (Sandbox Code Playgroud)

java android indexoutofboundsexception

10
推荐指数
1
解决办法
3965
查看次数

在索引处添加到ArrayList时的IndexOutOfBoundsException

我得到Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 0以下代码的例外.但无法理解为什么.

public class App {
    public static void main(String[] args) {
        ArrayList<String> s = new ArrayList<>();

        //Set index deliberately as 1 (not zero)
        s.add(1,"Elephant");

        System.out.println(s.size());                
    }
}
Run Code Online (Sandbox Code Playgroud)

更新

我可以使它工作,但我试图理解这些概念,所以我将声明改为下面,但也没有工作.

ArrayList<String> s = new ArrayList<>(10)
Run Code Online (Sandbox Code Playgroud)

java arraylist indexoutofboundsexception

10
推荐指数
3
解决办法
3万
查看次数