2014-12-06 74 views
2

這是我的刪除功能和它找到workday1對象:的Android realm.io:行/對象不再有效

public static void delete(Context context, Workday workday) { 
    Realm realm = getRealm(context); 
    realm.beginTransaction(); 

    Workday workday1 = realm.where(Workday.class) 
      .equalTo("date", workday.getDate()) 
      .equalTo("hours", workday.getHours()) 
      .equalTo("minutes", workday.getMinutes()) 
      .findFirst(); 

    workday1.removeFromRealm(); 
    realm.commitTransaction(); 
} 

enter image description here

當執行removeFromRealm方法崩潰:

java.lang.IllegalStateException: Illegal State: Row/Object is no longer valid to operate on.被刪除?

我該如何解決這個問題?任何幫助將不勝感激。

UPDATE(我可以打印通過以下方法返回的內容):

Workday workday1 = realm.where(Workday.class) 
      .equalTo("date", workday.getDate()) 
      .equalTo("hours", workday.getHours()) 
      .equalTo("minutes", workday.getMinutes()) 
      .findFirst(); 

    System.out.println("--------------------------------"); 
    System.out.println(workday1.getHours()); 

enter image description here

+0

你可以在removeFromRealm()之前訪問對象嗎?例如打印它? – bmunk 2014-12-08 08:38:14

+0

是的,我可以,請檢查我的更新。 – Jdruwe 2014-12-08 19:11:12

+0

如果這是你可以複製的東西,我建議你在https://github.com/realm/realm-java/issues創建一個github問題 – bmunk 2014-12-09 18:11:09

回答

2

您正試圖刪除你還沒有提交到境界又一個對象。

在這種特殊情況下,如果由於某種原因您不想再提交該對象,則可以簡單地取消該事務。

+0

我查詢對象,然後嘗試在事務中刪除它。我沒有看到我在做什麼錯誤,只是遵循以下文檔:http://realm.io/docs/java/0.75.0/#deletion – Jdruwe 2014-12-06 23:22:46

+0

您正在使用哪個版本的Realm?這可能是你正在使用close()方法,它不需要 – Emanuelez 2014-12-08 10:22:00

+0

我在我的gradle內部使用以下內容:io.realm:realm-android:0.75.1 – Jdruwe 2014-12-08 19:18:12

0

在我的情況下,問題是我正在刪除的相同的對象是在一個適配器。在我使適配器擴展RealmBaseAdapter後,問題停止了。