删除firebase数据库子节点时应用程序崩溃

Posted

技术标签:

【中文标题】删除firebase数据库子节点时应用程序崩溃【英文标题】:App crashing when firebase database child node is removed 【发布时间】:2019-08-16 14:01:41 【问题描述】:

我有一个名为 NewRescueRequest 的片段活动,它从数据库子节点加载值。

 databaseReference.child(firebaseAuth.getUid()).addValueEventListener(new ValueEventListener() 
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) 

            RequestEntries requestEntries = dataSnapshot.getValue(RequestEntries.class);
            requestfirstname.setText(requestEntries.getRequestFirstName() + " " + requestEntries.getRequestLastName());
            requestcontactnumber.setText(requestEntries.getRequestContactNumber());
            requestlocation.setText(requestEntries.getRequestLocation());
            requestlandmarks.setText(requestEntries.getRequestLandmarks());

当孩子被移动到不同的节点时,应用程序崩溃。当从节点中删除数据库子节点时,我想让它进入不同的活动。我尝试在 onCreateView 方法上使用 ValueEventListener。

databaseReference.child(firebaseAuth.getUid()).addListenerForSingleValueEvent(new ValueEventListener() 
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) 

            if(dataSnapshot.exists())

            
            else
                setRequestFragment();
            
        

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) 

        
    );

【问题讨论】:

崩溃日志在哪里,贴出来? 为什么你在第二个代码 sn-p 中检查 dataSnapshot.exists() 而不是先检查它? @M D 当孩子被移除时,它正在调用空指针异常(java.lang.NullPointerException) @VadimEksler 我忽略了这一点,我还需要将 dataSnapshot.exist() 放在第一个上以避免崩溃。谢谢 【参考方案1】:

if(dataSnapshot.exists()) 也必须包含在第一个代码 sn-p 中。

【讨论】:

以上是关于删除firebase数据库子节点时应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

从 Firebase 存储中删除文件会导致崩溃

从firebase删除时数组索引超出范围

从firebase中删除项目的正确方法

删除 UITableViewCell 时更新 firebase 中的数据

将上传的数据上传到android studio上的firebase实时数据库时应用程序崩溃

就像使用 Firebase 崩溃的反馈一样。快速点赞-删除赞