gpt4 book ai didi

android - java.lang.IllegalStateException : Object is no longer managed by Realm. 是否被删除?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:04:54 24 4
gpt4 key购买 nike

我正在学习 Realm 和 Recyclerview。我制作了简单的应用程序,您可以在其中简单地添加和删除项目。一切正常,直到我开始一个接一个地删除项目。在最后一项,当我单击删除时,它给我异常(exception)

java.lang.IllegalStateException: Object is no longer managed by Realm. Has it been deleted?

这是我的代码

  @Override
public void onDeleteClick(int position) {
mRealm.beginTransaction();
mResult.get(position).deleteFromRealm();
mRealm.commitTransaction();
adapter.notifyItemRemoved(position);
}

这里是全栈

  java.lang.IllegalStateException: Object is no longer managed by Realm. Has it been deleted?
at io.realm.internal.InvalidRow.getStubException(InvalidRow.java:192)
at io.realm.internal.InvalidRow.getString(InvalidRow.java:88)
at io.realm.PersonsRealmProxy.realmGet$firstName(PersonsRealmProxy.java:67)
at techiespk.realmpractice.Persons.getFirstName(Persons.java:22)
at techiespk.realmpractice.MyListAdapter.onBindViewHolder(MyListAdapter.java:44)
at techiespk.realmpractice.MyListAdapter.onBindViewHolder(MyListAdapter.java:15)
at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5471)
at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5504)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4741)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4617)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1994)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1390)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1353)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:574)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3028)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2906)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3283)

最佳答案

好的,感谢 Christian Melchior 的帮助。我通过这样做修复了我的代码

之前

   @Override
public void onBindViewHolder(MyListViewHolder holder, int position) {
Persons p = persons.get(position);
holder.firstName.setText(p.getFirstName());
holder.lastName.setText(p.getLastName());
}

之后

   @Override
public void onBindViewHolder(MyListViewHolder holder, int position) {

if (persons.get(position).isValid()) {
Persons p = persons.get(position);
holder.firstName.setText(p.getFirstName());
holder.lastName.setText(p.getLastName());
}
}

关于android - java.lang.IllegalStateException : Object is no longer managed by Realm. 是否被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37028860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com