Android 领域 Java 0.82.1 ArrayIndexOutOfBoundsException

Android Realm Java 0.82.1 ArrayIndexOutOfBoundsException

尝试从领域 (0.82.1) 更新对象时出现此错误:

rowIndex > available rows: 0 > 0

Realm realm = null;

try{
    realm = Realm. getInstance ( context );
    RealmResults<Track> results = realm.allObjects( Track.class )
        .where()
        .equalTo("fileType", type)
        .equalTo("fileState", actualState)
        .equalTo("fileName", fileName)
        .findAll();

   //At this point result.size() = 1

   for( int i = 0; i < results.size(); i++ )
   {
       realm.beginTransaction();
       results.get( i ).setFileState(newState);
       realm.commitTransaction();
   }

}catch ( RealmException e ) {
    Log.d( TAG, e.getMessage());
}catch ( RealmIOException e ) {
    Log.d( TAG, e.getMessage());
}catch ( Exception e ) {
    Log.d( TAG, e.getMessage());
}
finally {
    if (realm != null) {
        realm.close();
    }
}

我也尝试过使用迭代器,但我遇到了同样的错误。

总结:

崩溃发生在 for 循环中。我捕获的异常是:

rowIndex 0 > 0 - invalid!
jni: ThrowingException 7, rowIndex > available rows: 0 > 0

有什么解决办法吗?

发生这种情况是因为您正在修改正在迭代的 RealmResults。这是一个已知问题,您可以在此处关注其进展:https://github.com/realm/realm-java/issues/640

作为解决方法,您可以在迭代期间将要修改的对象保存在另一个列表中,然后迭代新列表以进行实际修改。