2016-03-27 16 views
2

Ich versuche, Favoritenliste in meiner Anwendung zu implementieren. Dafür verwende ich Realm als meine Datenbank, um den Inhalt zu speichern. Ich kann die Inhalte erfolgreich hinzufügen, aber beim Versuch, die Elemente zu entfernen, stürzt die App ab. Ich versuche, die Objekte mit dem Primärschlüssel zu löschen, der die Variable MovieId ist. Aber es stürzt die App ab. Jede Hilfe wird geschätzt.android- Wie Objekte hinzufügen und löschen Realm Database?

-Code für das Hinzufügen und Entfernen des Inhalts:

 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

Was ist die Frage? Bitte sei klar! – cramopy

+0

So löschen Sie Objekte aus dem Realm. Das ist meine Frage –

Antwort

2

Statt dieser

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

Verwendung clear() Methode (https://realm.io/docs/java/latest/api/io/realm/RealmResults.html#clear--)

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

Danke für die Hilfe. Aber ich habe das Problem gelöst. –

+3

Diese Methode scheint veraltet zu sein. – Trinity

+1

clear() ist veraltet, Sie können stattdessen deleteAllFromRealm() verwenden –

3

Sobald die Methode clear() veraltet ist, können Sie sollte verwenden:

realm.deleteAll() 

oder

results.deleteAllFromRealm() 

Quelle: Realm Documentation