删除firebase子后应用程序崩溃

时间:2017-12-13 18:18:23

标签: android firebase firebase-realtime-database nullpointerexception android-recyclerview

我的应用在RecyclerView一些不同的firebase孩子及其值中显示。 我在应用程序上创建了一个方法,它可以删除一个子项,但是在我删除了一个firebase子项之后,它在我的应用程序崩溃之前在片段上的RecyclerView上显示,因为它无法在RecyclerView上找到子项名称和值(很明显,因为我刚删除了它们)

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
                                                                             at world.cryneo.partytime.java.RequestsFragment$2$1.onDataChange(RequestsFragment.java:108)

这里没有得到儿童的价值观,因为孩子们被删除了。

final String eventName = dataSnapshot.child("Name").getValue().toString();

在块onCreateView中,我告诉数据库保持同步。我认为这会解决它,但问题仍然存在。

mEventsDatabase.keepSynced(true);

那么如何告诉firebase和Recycler View我刚刚删除了一个子节点及其值,并且不应该通过下载不存在的数据来崩溃?

这是我让孩子们离开火场的方式:

 mEventsDatabase.child(list_event_id).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {


                        final String eventName = dataSnapshot.child("Name").getValue().toString();

...

1 个答案:

答案 0 :(得分:1)

您是否尝试过检查快照是否存在?

mEventsDatabase.child(list_event_id).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        // ADD THIS
                        if (!dataSnapshot.exists()) {
                          return;
                        }


                        final String eventName = dataSnapshot.child("Name").getValue().toString();