2016-08-01 61 views
0

我得到一個RealmResults在一個活動像下面工作的onChange方法不

bean = realm.where(CitySceneryBean.class).equalTo("id", mVid).findFirst(); 
bean.addChangeListener(new RealmChangeListener<CitySceneryBean>(){ 
     @Override 
     public void onChange(CitySceneryBean element) { 
      Log.i(SceneryDetailActivity.class, "onChange"); 
      noManagedBean = realm.copyFromRealm(element); 
      refreshData(); 
     } 
    }); 

我確認ReamlObject「bean」包含在citySceneryBeanRealmResults中,現在當citySceneryBeanRealmResults被修改時,並且在A Activity中我確認相關的bean已更新,但在B Activity中onChange方法不起作用,爲什麼?

+0

「不工作」,如「不會被調用」或「拋出異常」? – Fildor

+0

它不叫! – liujiankun

+0

你在哪裏關閉了你有.addChangeListener的Activity的Realm實例?如果在對數據進行修改之前關閉Realm實例,則可能無法獲得回調。 –

回答

0

您應該確保RealmChangeListener是一個字段變量。

RealmChangeListener realmChangeListener = new RealmChangeListener<CitySceneryBean>(){ 
    @Override 
    public void onChange(CitySceneryBean element) { 
     Log.i(SceneryDetailActivity.class, "onChange"); 
     noManagedBean = realm.copyFromRealm(element); 
     refreshData(); 
    } 
}; 

void someMethod() { 
    bean = realm.where(CitySceneryBean.class).equalTo("id", mVid).findFirst(); 
    bean.addChangeListener(realmChangeListener); 
} 
相關問題