2016-07-14 11 views
1

レルムを使用して、後でListViewに表示されるアイテムを格納します。 アイテムには削除ボタンがあり、ユーザーがそのボタンを2回クリックすると、アプリケーションがクラッシュします。例外をキャッチして無視するよりも、より洗練されたソリューションがありますか?ここでrealm.ioから1つのオブジェクトを削除するアンドロイドがまだ存在する場合は

はのonClickメソッドのコードです:

@Override 
public void onClick(View view) { 
    Toast.makeText(context, "Timer " + timer.getUUID() + " was stopped.", Toast.LENGTH_SHORT).show(); 
    Realm realm = Realm.getDefaultInstance(); 
    realm.beginTransaction(); 
    RealmResults<Timer> result = realm.where(Timer.class).equalTo("uuid", timer.getUUID()).findAll(); 
    result.deleteAllFromRealm(); 
    realm.commitTransaction(); 
} 
+0

「result.deleteAllFromRealm();」の前に 'if(result.size()> 0){//すべてを領域から削除してください}'をチェックしてみてください。 – Lawrance

+0

は問題ではありませんが、私はすでにそのオブジェクトへの参照を持っています。そして、UUIDを削除しようとすると、例外がスローされます。 –

+0

リストビューからアイテムを削除しますか?ユーザーが削除をクリックすることはできません –

答えて

2

私はすでにそのオブジェクトへの参照を持っていたことから、私は私のコードを参照して、王国のisValid()メソッドを使用することができることを実現:

@Override 
public void onClick(View view) { 
    Realm realm = Realm.getDefaultInstance(); 
    realm.beginTransaction(); 
     if (timer.isValid()) { 
      Toast.makeText(context, "Timer " + timer.getUUID() + " was stopped.", Toast.LENGTH_SHORT).show(); 
      timer.deleteFromRealm(); 
     } 
    realm.commitTransaction(); 
} 

私も私はいくつかの理由で以前のバージョンを見つけることができなかったことを、RealmObjectの方法)(deleteFromRealmを見つけました。..
ので、正解は次のようになります。

RealmObject o = someRealmObject; 
realm.beginTransaction(); 
if (o.isValid()) o.deleteFromRealm(); 
realm.commitTransaction(); 
関連する問題