2017-04-19 112 views
0

中獲取firebase內部類的Value對象值如何將用戶名值放入MyName值,以便我可以獲取實時值,因爲每當我嘗試使用它時,它都會顯示空指針異常。如何在android

String username; 

ref.addValueEventListener(new ValueEventListener() { 


@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    String userinfo = dataSnapshot.getValue(User.class); 
    username = userInfo.username; 
} 

@Override 
public void onCancelled(FirebaseError firebaseError) { 

} 
}); 

String MyName = username; 
+0

請重新格式化您的代碼 – liorsolomon

回答

0

您需要首先聲明MYNAME變量,然後onDataChange回調中值分配給它,就像這樣。

String username; 
String myName; 

ref.addValueEventListener(new ValueEventListener() { 

@Override 
public void onDataChange(DataSnapshot dataSnapshot) { 
    String userinfo = dataSnapshot.getValue(User.class); 
    username = userInfo.username; 
    myName = username; 
    //Call any method/operation that needs to use myName variable here 
    ... 
} 

@Override 
public void onCancelled(FirebaseError firebaseError) { 

} 
}); 
+0

而且它顯示空指針異常,每當我嘗試使用MYNAME價值 – An9shp

+0

這是因爲onDataChange方法是從一個異步操作的回調,因此直到你有你不能使用MYNAME變量給它分配一個值(在調用onDataChange之後)。嘗試在調用onDataChanged之後調用使用myName的方法或操作。 – wnieves19