【问题标题】:Retrieve value from firebase; type is unknown从 Firebase 中检索值;类型未知
【发布时间】:2018-11-20 13:00:11
【问题描述】:

我的 Firebase 结构如下所示。

Firebase pic

我有两种类型的用户。获取快照时,如何根据存储在 firebase 中的类型实例化我的对象。我的代码如下

if(task.isSuccessful()){
   DatabaseReference databaseReference;
   FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();

     if(firebaseUser != null){
        databaseReference = firebaseDatabase.getReference("User").child(firebaseUser.getUid());
        databaseReference.addValueEventListener(new ValueEventListener() {
           @Override
           public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
              //HOW CAN I FIX THIS TO BE THE CORRECT USER TYPE
              User user = dataSnapshot.getValue(User.class);
              Intent intent = null;
              if(user != null){
                 //IF USER IS TYPE 1, CREATE USER OF TYPE 1 AND ADD STUFF TO MY INTENT
                 //IF USER IS TYPE 2, CREATE USER OF TYPE 2 AND ADD STUFF TO MY INTENT
                 finish();
                 startActivity (intent);
              }
        }
     }
  }

【问题讨论】:

    标签: java firebase android-studio firebase-realtime-database


    【解决方案1】:

    为此,您只需从数据库中检查节点 userTypeId 的值,然后做您想做的事。

    我在说什么,在代码中看起来像这样:

    databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
    
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if(user != null){
    
                     if(dataSnapshot.child("userTypeId").getValue(String.class).equals(0))
                            // user type 1
                     else 
                           // user type 2
    
                    finish();
                    startActivity (intent);
                   }
                }
    
                @Override
                public void onCancelled(DatabaseError databaseError) {
                    Log.d(TAG, "onCancelled", databaseError.toException());
                }
    
    
            });
    

    【讨论】:

    • 不用担心@Drogba,考虑通过单击答案旁边的 V 型按钮来标记答案为正确,这有助于问题的未来读者,我也会很感激。干杯! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多