1

我正在编写一个 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];
}}
4

0 回答 0