Java IndexOutOfBoundsException索引0大小0试图编辑填充的arraylist中的元素

Java IndexOutOfBoundsException索引0大小0试图编辑填充的arraylist中的元素,java,arraylist,fragment,indexoutofboundsexception,Java,Arraylist,Fragment,Indexoutofboundsexception,我试图在已经填充的arraylist中编辑一个元素,但不断出现错误。 该方法是从片段调用的,但我似乎无法从片段或与片段相关的任何内容访问arraylist。我可以在同一个类中的任何其他地方更改我想要的值,除了从片段调用的方法。我会非常感谢你的帮助,提前谢谢你 片段代码 MainActivity method = new MainActivity(); @Override public void onDetach() { method.updateQuantity(Quantity);

我试图在已经填充的arraylist中编辑一个元素,但不断出现错误。 该方法是从片段调用的,但我似乎无法从片段或与片段相关的任何内容访问arraylist。我可以在同一个类中的任何其他地方更改我想要的值,除了从片段调用的方法。我会非常感谢你的帮助,提前谢谢你

片段代码

 MainActivity method = new MainActivity();

@Override
public void onDetach() {
    method.updateQuantity(Quantity);
    super.onDetach();
}
主活动代码

public void updateQuantity(int Quantity){
    items.get(currentitem).setQuantity(Quantity);
}

如果
items
是您的ArrayList,那么对于
ArrayList.get
,它将
integer(index)
作为参数,然后返回该索引的元素

因此,这个
items.get(currentitem).setQuantity(Quantity)
)调用是 非常不安全。需要先检查最大索引长度,然后尝试访问它

public void updateQuantity(int Quantity){
    if(items != null and currentitem < items.size(){
       items.get(currentitem).setQuantity(Quantity);
    }
}
public void updatequality(整数数量){
if(items!=null和currentitem
什么是
方法
?在哪里设置
currentitem
?方法设置为使用主活动。即MainActivity方法=新的MainActivity();我动态设置了它,我知道这不是问题所在,因为我将其硬编码为索引0,但仍然出现了相同的问题。“items”是否为空?不,它已填充。我可以从任何不在片段中或以某种方式连接到它的方法更新列表。我已将currentitem设置为onitemclicklistener提供的位置值或设置为arraylist的大小为-1。我已经手动更改了要通过硬拷贝索引0访问的inex,我知道存在该索引,但仍然给出了该错误。我不清楚您的评论,您能再次解释一下吗InirentItem只能是存在的索引,可以从onitemclicklistener获取索引,也可以从arralist的大小获取索引。我尝试了u在currentItem处使用索引0查看currentItem是否导致问题,但对现有索引进行编码以进行编辑仍会导致错误。请添加详细的错误日志和更多代码