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();
}
}
我也尝试过使用迭代器,但我遇到了同样的错误。
总结:
- 每次都崩溃。 (我已经看过很多次了)
- 可重现。
- 在 Android 4.4.4 (Samsung Galaxy S3)、5.0.1 (Samsung Galaxy Note4)
上遇到过崩溃
崩溃发生在 for 循环中。我捕获的异常是:
rowIndex 0 > 0 - invalid!
jni: ThrowingException 7, rowIndex > available rows: 0 > 0
有什么解决办法吗?
发生这种情况是因为您正在修改正在迭代的 RealmResults。这是一个已知问题,您可以在此处关注其进展:https://github.com/realm/realm-java/issues/640
作为解决方法,您可以在迭代期间将要修改的对象保存在另一个列表中,然后迭代新列表以进行实际修改。
尝试从领域 (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();
}
}
我也尝试过使用迭代器,但我遇到了同样的错误。
总结:
- 每次都崩溃。 (我已经看过很多次了)
- 可重现。
- 在 Android 4.4.4 (Samsung Galaxy S3)、5.0.1 (Samsung Galaxy Note4) 上遇到过崩溃
崩溃发生在 for 循环中。我捕获的异常是:
rowIndex 0 > 0 - invalid!
jni: ThrowingException 7, rowIndex > available rows: 0 > 0
有什么解决办法吗?
发生这种情况是因为您正在修改正在迭代的 RealmResults。这是一个已知问题,您可以在此处关注其进展:https://github.com/realm/realm-java/issues/640
作为解决方法,您可以在迭代期间将要修改的对象保存在另一个列表中,然后迭代新列表以进行实际修改。