2016-03-27 21 views
2

私のアプリケーションにお気に入りリストを実装しようとしています。そのために、コンテンツを格納するデータベースとしてレルムを使用しています。コンテンツを正常に追加できますが、アイテムを削除しようとするとアプリがクラッシュします。 movieId変数の主キーを使用してオブジェクトを削除しようとしています。しかし、それはアプリをクラッシュさせます。 ヘルプは高く評価されています。内容を追加および削除するandroid-どのようにオブジェクトをデータベースに追加したり削除したりできますか?

コード:

 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

レルムからオブジェクトを削除する方法。それは私の質問です –

答えて

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

関連する問題