我尝试导入各种Firebase软件包来阻止此错误的发生,但该错误仍然存在。我正在尝试采取以下措施:
firebase.addValueEventListener(new ValueEventListener() {
但我一直在得到错误:
Cannot Resolve symbol 'addValueEventListener'
尽管事实上我有ValueEventListener导入。 (可能很重要的一点是,即使我显然试图使用ValueEventListener,它也会在IDE中显示为未使用的导入)
最佳答案
确保实例化该方法并将其添加到诸如OnStart(){}或正在使用的类的构造函数之类的方法中。如果不是,则其行为将与您的描述类似。
此问题的一个示例:
public class ReadFromFireBase(){
private DatabaseReference mDatabase;
public ReadFromFireBase(){
}
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get Post object and use the values to update the UI
Post post = dataSnapshot.getValue(Post.class);
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
// ...
}
};
mDataBase.addValueEventListener(postListener);
}
这将无法正常工作,并引发与您得到的错误类似的错误,按照侦听器的结构方式,这很容易犯错误
正确的方法是:
public class ReadFromFireBase(){
private DatabaseReference mDatabase;
private ValueEventListener postListener;
public ReadFromFireBase(){
postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get Post object and use the values to update the UI
Post post = dataSnapshot.getValue(Post.class);
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w(TAG, "loadPost:onCancelled", databaseError.toException());
// ...
}
};
mDataBase.addValueEventListener(postListener);
}
}