使用从ValueEventListener方法

时间:2018-05-07 13:36:03

标签: java android database firebase read-data

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

0 个答案:

没有答案