当我删除 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
我正在尝试检查数组位置是否超出范围,最简单的方法是什么?
int[] arr;
populate(arr);
if(arr[-1] == null)
//out of bounds!
Run Code Online (Sandbox Code Playgroud)
会这样的吗?
我很确定这可以通过trycatch或扫描仪完成,但对于一个简单的小程序,还有另外一种方法吗?
我在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
我的问题是:
虽然我明显超出了阵列的容量,为什么我不会出现超出界限(分段错误)的异常?
为什么输出中的数字会突然跳到很大的数字?
我在C++中试过这个并且得到了相同的行为.请问有谁可以解释一下这是什么原因?
有人可以向我解释为什么ArrayIndexOutOfBoundsException是运行时异常而不是编译时错误?在明显的情况下,当索引为负数或大于数组大小时,我不明白为什么它不能是编译时错误.
编辑:特别是在编译时已知数组的大小甚至索引,例如,int[] a = new int[10]; a[-1]=5;这应该是编译错误.
我在Samsung Galaxy S5和Note 3和4上得到了IndexOutOfBoundsException.它没有引用我的代码.有没有遇到过这个?我在这里找不到任何东西.
当尝试长按EditText以粘贴内容时,似乎偶尔会发生这种情况.
编辑:
我正在使用一个简单的EditText字段(不在ListView或Spinner中).有一个约28个字符的提示.我切换经由调焦clearFocus几次,我使用的是setOnEditorActionListener与setOnFocusChangeListener该控制连接到所述活性的片段.
编辑#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) 我们应该使用哪些用例ArrayIndexOutOfBoundsException和`IndexOutOfBoundsException?
我在日志中收到此异常 -
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
问题自从升级到 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)我正在尝试使用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) 我得到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 ×5
android ×4
android-jetpack-compose-lazy-column ×1
arraylist ×1
arrays ×1
c ×1
compilation ×1
compile-time ×1
exception ×1
target-sdk ×1