Android - 无法使用给定的uid从firebase检索数据

时间:2016-09-04 17:42:14

标签: android firebase firebase-realtime-database

我的Firebase database结构是:

enter image description here

当我有钥匙时,我想要检索某个用户的全名。

我的代码:

public class ProfileActivity extends AppCompatActivity implements View.OnClickListener {

    private FirebaseAuth firebaseAuth;
    private TextView textView;
    private Button logbutton,wantToDeliverButton,lookForButton;
    private String userName;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);
        Firebase.setAndroidContext(this);textView = (TextView)findViewById(R.id.textView2);
        Firebase usersRef = new Firebase("https://myfirstfirebaseauth.firebaseio.com");
        firebaseAuth = FirebaseAuth.getInstance();
        if (firebaseAuth.getCurrentUser() == null){
            finish();
            startActivity(new Intent(this,LoginActivity.class));
        }
        FirebaseUser user = firebaseAuth.getCurrentUser();
        Firebase ref = usersRef.child("User").child(user.getUid());
        ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                userName = dataSnapshot.getValue(User.class).getFullName();

            }

            @Override
            public void onCancelled(FirebaseError firebaseError) {

            }
        });
        textView.setText("welcome "+userName);
    }
}

但是它将textView设置为null。我尝试将Toast置于onDataChange()方法中,但它不起作用。它似乎并没有进入方法。

FirebaseUser user = firebaseAuth.getCurrentUser();行是正确的,因为如果我正在写textView.setText("welcome "+ user.getEmail()); - 我真的收到了正确的电子邮件。

如何解决这个问题?我使用正确的听众吗?我不想改变数据库中的任何内容,只需要检索。

修改:转到onCancelled()

1 个答案:

答案 0 :(得分:2)

您可以使用旧版2.5.X Firebase SDK(示例:Firebase.setAndroidContext())和新的9.X.X SDK(示例:FirebaseAuth.getInstance())混合功能。这几乎肯定是失败的秘诀。重新编写代码以仅使用新SDK。 Setup Guide is here