【问题标题】:App crash after removing firebase child删除firebase子后应用程序崩溃
【发布时间】:2018-05-27 17:44:16
【问题描述】:

我的应用程序在 RecyclerView 中显示了一些不同的 firebase 子项及其值。 我在应用程序上创建了一个方法,该方法可以删除一个子项,但是在我删除了一个在我的应用程序崩溃之前显示在片段上的 RecyclerView 上的 firebase 子项之后,因为它无法在 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();

...

【问题讨论】:

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


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多