2016-03-27 85 views
2

我正試圖在我的應用程序中實現收藏夾列表。爲此,我使用領域作爲我的數據庫來存儲內容。我能夠成功添加內容,但試圖刪除項目時會使應用程序崩潰。我試圖刪除使用主鍵是movieId變量的對象。但它會使應用程序崩潰。 任何幫助被讚賞。android-如何添加和刪除對象到realm數據庫?

代碼中添加和刪除的內容:

 mFavoriteButton.setOnFavoriteChangeListener(new MaterialFavoriteButton.OnFavoriteChangeListener() { 
      @Override 
      public void onFavoriteChanged(MaterialFavoriteButton buttonView, boolean favorite) { 
       if(!favorite) { 
        SharedPreferences.Editor editor = getSharedPreferences("com.thejoker.yts", MODE_PRIVATE).edit(); 
        editor.putBoolean("Fav Checked", false); 
        editor.commit(); 
        RealmResults<FavoriteListRealm> results = mRealm.where(FavoriteListRealm.class).equalTo("realmMovieId", movieId).findAll(); 

        mRealm.beginTransaction(); 
        mResults.remove(results); 
        mRealm.commitTransaction(); 
        Toast.makeText(getContext(), "Not a favorite", Toast.LENGTH_SHORT).show(); 
       } 
       if(favorite) { 
        SharedPreferences.Editor editor = getSharedPreferences("com.thejoker.yts", MODE_PRIVATE).edit(); 
        editor.putBoolean("Fav Checked", true); 
        editor.commit(); 
        mRealm.beginTransaction(); 
        FavoriteListRealm favorites = mRealm.createObject(FavoriteListRealm.class); 
        favorites.setRealmMovieId(movieId); 
        favorites.setRealmMovieTitle(movieTitle); 
        favorites.setRealmThumbnailUrl(movieUrlThumbnail); 
        favorites.setRealmMovieYear(movieYear); 
        mRealm.copyToRealmOrUpdate(favorites); 
        mRealm.commitTransaction(); 
        mResults = mRealm.where(FavoriteListRealm.class).findAllAsync(); 
        Toast.makeText(MovieDetailsActivity.this, mResults.toString(), Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
+0

問題是什麼?請清楚! – cramopy

+0

如何從Realm中刪除對象。那是我的問題 –

回答

2

而是這個

mRealm.beginTransaction(); 
mResults.remove(results); 
mRealm.commitTransaction(); 

使用clear()方法(https://realm.io/docs/java/latest/api/io/realm/RealmResults.html#clear--

mRealm.beginTransaction(); 
results.clear(); 
mRealm.commitTransaction(); 
+0

感謝您的幫助。但我解決了這個問題。 –

+3

此方法似乎已被棄用。 – Trinity

+1

clear()已棄用,您可以使用deleteAllFromRealm() –

3

一旦方法clear()已過時,你的應該使用:

realm.deleteAll() 

results.deleteAllFromRealm() 

來源:Realm Documentation