我正在编写一个Android应用程序,我需要从firebase数据库中读取一些数据。首先我是在mainActivity.java类中进行的,但它开始看起来很乱。所以,我创建了一个新类,它将管理所有与数据库相关的事情。但由于某些原因,我无法在ValueEventListener方法之外使用我得到的数据。
下面你可以看到我的代码。我希望我对我的问题很清楚。如果有人愿意提供帮助,我将非常感激。谢谢!
public class UserManager {
public Long getUserScore() {
final Long[] score = new Long[1];
DatabaseReference databaseReferenceUser;
databaseReferenceUser = FirebaseDatabase.getInstance().getReference("users");
databaseReferenceUser.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
User user = dataSnapshot.getValue(User.class);
score[0] = user.getScore();
Log.w("Score: ", score[0].toString()); // output: value from the db- Works fine
}
Log.w("Score: ", score[0].toString()); // output: value from the db- Works fine
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Log.w("Score: ", score[0].toString()); // output: NullPointerException
return score[0];
}}