public void onCancelled(FirebaseError firebaseError)给出错误

时间:2017-11-22 11:27:28

标签: android firebase firebase-realtime-database

我使用的是Firebase,这行代码会导致错误。

@Override
public void onCancelled(FirebaseError firebaseError) {
}

错误如下,

  1. 方法不会覆盖超类中的方法
  2. 方法' onCancelled(com.firebase.client.FirebaseError)'永远不会使用
  3. 如何解决这些错误?

    我的代码 -

    public class FirebaseClient  {
        Context c;
        String DB_URL;
        ListView listView;
        Firebase firebase;
        ArrayList<Dog> dogies= new ArrayList<>();
        CustomAdapter customAdapter;
    
        public  FirebaseClient(Context c, String DB_URL, ListView listView)
        {
            this.c= c;
            this.DB_URL= DB_URL;
            this.listView= listView;
            Firebase.setAndroidContext(c);
            firebase=new Firebase(DB_URL);
        }
        public  void refreshdata()
        {
            firebase.addChildEventListener(new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                    getupdates(dataSnapshot);
                }
                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                    getupdates(dataSnapshot);
                }
                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {
                }
                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {
                }
                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
                @Override
                public void onCancelled(FirebaseError firebaseError) {
                }
            });
        }
        public void getupdates(DataSnapshot dataSnapshot){
            dogies.clear();
    
            for(DataSnapshot ds :dataSnapshot.getChildren()){
                Dog d= new Dog();
                d.setTimestamp(ds.getValue(Dog.class).getTimestamp());
                d.setInstituteNotice(ds.getValue(Dog.class).getInstituteNotice());
                dogies.add(d);
            }
            if(dogies.size()>0)
            {
                customAdapter=new CustomAdapter(c, dogies);
                listView.setAdapter((ListAdapter) customAdapter);
            } else
            {
                Toast.makeText(c, "No data", Toast.LENGTH_SHORT).show();
            }
        }
    }
    

2 个答案:

答案 0 :(得分:1)

您正在使用legacy Firebase SDK(已弃用超过一年)并在新SDK中混合使用类。您应该考虑迁移到新的SDK。 Upgrade Guide概述了这些步骤。

在您发布的代码中,DatabaseError来自新SDK,而不是旧版SDK,因此此覆盖无效且应删除:

public P()
    {
            C.Log = myLog;
            InitializeComponent();
    }

答案 1 :(得分:0)

为了解决这个问题,您需要从代码中删除以下方法:

@Override
public void onCancelled(FirebaseError firebaseError) {}

您已从其超类中覆盖public void onCancelled(DatabaseError databaseError)。我建议您删除的代码用于早期版本的SDK。你需要使用新的。