2015-08-28 92 views
3

我越來越想從更新的境界(0.82.1)的客體時,這個錯誤:的Android領域的Java 0.82.1 ArrayIndexOutOfBoundsException異常

的rowIndex>可用行: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(); 
    } 
} 

我也試過Iterator但我有同樣的錯誤。

摘要:

  • 它崩潰每次。 (我多次看過它)
  • 它是可重現的。
  • 在Android 4.4.4(三星Galaxy S3),5.0.1(三星Galaxy注4)有經驗的崩潰

崩潰是for循環。我捕獲的例外是:

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

任何解決方案?

+0

什麼崩潰?在什麼情況下?導出堆棧跟蹤並證明產生錯誤的行。 –

+0

for循環崩潰。我捕獲的異常是 rowIndex 0> 0 - 無效! jni:ThrowingException 7,rowIndex>可用行數:0> 0 – mrpep

回答

3

發生這種情況是因爲您正在修改正在迭代的RealmResults。這是一個已知的問題,您可以在此處關注其進度:https://github.com/realm/realm-java/issues/640

作爲解決方法,您可以在迭代過程中將要修改的對象保存在另一個列表中,然後迭代新列表以進行實際修改。

+0

謝謝! 我必須說這個解決方法實際上效果很好 – mrpep

相關問題