2017-02-15 20 views
0

當我安裝我的第一次應用在手機上的應用程序崩潰,因爲該領域的錯誤:This method is only available in managed mode,我真的不明白,很多境界錯誤:此方法僅在管理模式下可用

這happends當我試圖讓班上的ListItem排序列表Shoplist

public class Shoplist extends RealmObject implements Serializable { 

private RealmList<ListItem> itemList; //ListItem extends `RealmObject` 

@Ignore 
private Realm realm; 

@PrimaryKey 
private long id; 

public Shoplist() { 

    realm = Realm.getDefaultInstance(); 
} 

public RealmList<ListItem> getItemList() { 
    return itemList; 
} 

public List<ListItem> getItems(String listOrder) { 

    RealmResults<ListItem> realmResults; 

    switch (listOrder) { 
     case PrefActivity.ASCENDING: 
      realmResults = getItemList().where().findAll(); // this crashes! 
      break; 

     case PrefActivity.DESCENDING: 
      realmResults = getItemList().where().findAllSorted(ListItem.TIME_STAMP, Sort.DESCENDING); 
      break; 
    } 

    return realmResults; 
    } 
} 

一個Shoplist對象是在一個叫做類像這樣創建RealmService

public Shoplist createShoplist(String title) { 

    realm = Realm.getDefaultInstance(); 
    realm.beginTransaction(); 
    Shoplist shoplist = new Shoplist(new RealmList<ListItem>(), title); 
    realm.copyToRealm(shoplist); 
    realm.commitTransaction(); 

    return shoplist; 

} 

STATS:

境界搖籃插件:2.3.1

搖籃插件:2.2.3

編譯版本:25

的Android Studio版本:2.2.3

測試手機:三星Galaxy S7

+0

這個【答案】(http://stackoverflow.com/questions/37162444/creating-managed-realmlist-outside-realmobject)可以幫助你與你的probelm –

+0

這個答案可能會幫助你在你的問題 http://stackoverflow.com/questions/37162444/creating-managed-realmlist-outside-realmobject –

+0

你真的應該關閉你的領域實例。此外,你真的不應該給你的模型類一個領域的實例。 –

回答

1

你需要工作與managed object。當Shoplist對象使用new運營商創建時,您的錯誤發生 - 它不是管理對象

你需要用的Shoplist實例境界:

public Shoplist createShoplist(String title) { 

    realm = Realm.getDefaultInstance(); 
    realm.beginTransaction(); 

    Shoplist shoplist = realm.createObject(Shoplist.class) 
    shoplist.setTitle(title); 

    realm.copyToRealm(shoplist); 
    realm.commitTransaction(); 

    return shoplist; 
} 
+0

我剛編輯我的問題。請看看它的底部。是因爲我這樣做? – Muddz

+0

阿哈好!大家一直說,因爲它沒有管理的對象,但沒有人解釋了非託管vs託管的樣子,你的答案是這樣的! – Muddz

+0

但是使用這種方式,它不會有'Shoplist'來包含'@ primaryKey',所以我刪除它並使用這個調用'realm.createObject(Shoplist.class,System.currentTimeMillis());' 但是如何那麼我可以回顧「Shoplist」創建的對象的ID嗎?它存儲在哪裏 – Muddz

相關問題