Realm保留一个已删除的对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Realm保留一个已删除的对象相关的知识,希望对你有一定的参考价值。

我有两个片段A和B,在片段BI中使用事务删除一个对象然后我执行getActivity().getSupportFragmentManager().popBackStack();返回片段A,删除对象后我调试并发现该对象被正确删除,但是当我返回片段AI时发现它,这很奇怪!

这是我的片段A中的代码

realm.executeTransactionAsync(new Realm.Transaction() {
                                    @Override
                                    public void execute(@NonNull Realm realm) {
                                        Infraction infraction = realm.where(Infraction.class).equalTo("id",id_new_inf).findFirst();
                                        if(infraction != null)
                                            infraction.deleteFromRealm();
                                    }
                            });
  getActivity().getSupportFragmentManager().popBackStack();

那么为什么对象没有被删除?

在片段A中,我没有什么特别的东西,它只是onCreateView中的一个请求

@Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        final View v = inflater.inflate(R.layout.list_infractions, container, false);
infractions = realm.where(Infraction.class).findAll();
}
答案

realm.executeTransactionAsync((r) ->
                    Infraction infraction = r.where(Infraction.class).equalTo("id",id_new_inf).findFirst();
                    if(infraction != null)
                          infraction.deleteFromRealm();
                    }
             }, () -> { // on Success 
                    getActivity().getSupportFragmentManager()
                                .popBackStack();
             });

以上是关于Realm保留一个已删除的对象的主要内容,如果未能解决你的问题,请参考以下文章

应用程序崩溃并收到错误:对象已被删除或失效

领域:删除过时的对象

Realm和RecyclerView项目排序和自动ViewPager片段通信

如何从 SwiftUI 和 Realm 中另一个列表中的对象中添加和删除列表中的对象

防止 Proguard 删除片段的空构造函数

领域对象已被删除或失效