问题
I'm trying to send a query on database to display the associated node number if it matches with the string 'token' inputed by the user. However, I'm getting a 'Method does not override method from its superclass' and 'Method onCancelled is never used in method' just for the onCancelled function. Where am I going wrong?
buttonSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Creating firebase object
Firebase ref = new Firebase(Config.FIREBASE_URL);
//Getting values to store
String token = editToken.getText().toString().trim();
Query query = ref.orderByChild("token").equalTo(token, "token");
query.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
Person user = snapshot.getValue(Person.class);
String demo=user.getNodes();
System.out.println("Nodes: " + demo);
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
Person friend = dataSnapshot.getValue(Person.class);
Toast.makeText(enter_page.this
, "Friend removed: " + dataSnapshot.getKey()
+ " token: " + friend.getToken()
+ " name: " + friend.getNodes()
, Toast.LENGTH_SHORT).show();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
Person friend = dataSnapshot.getValue(Person.class);
Toast.makeText(enter_page.this
, "Friend changed: " + dataSnapshot.getKey()
+ " token: " + friend.getToken()
+ " nodes: " + friend.getNodes()
, Toast.LENGTH_SHORT).show();
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("DATABASE ERROR");
}
});
回答1:
OnCanceled uses a FirebaseError and not a DatabaseError so it should be like this :
@Override
public void onCancelled(FirebaseError databaseError) {
System.out.println("DATABASE ERROR");
}
Parameters types are important when overriding a method.
来源:https://stackoverflow.com/questions/43789400/method-oncancelled-is-never-used-in-firebase