-1
我剛剛將離線持久性添加到我的應用程序。在onCreate()方法,我有這樣的代碼:NullPointerExeception嘗試訪問片段的onCreateView中的Firebase Datasnapshot數據
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
Log.e(TAG, "onAuthStateChanged:signed_in: " + firebaseUser.getUid());
valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
myUser = dataSnapshot.getValue(User.class);
city = myUser.getCity();
username = myUser.getUsername();
Log.d(TAG, city);
Log.d(TAG, username);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
mDatabaseReference.child("users")
.child(firebaseUser.getUid())
.addValueEventListener(valueEventListener);
mDatabaseReference.keepSynced(true);
} else {
Toast.makeText(mContext, "Could not load content at this time.", Toast.LENGTH_SHORT).show();
}
}
};
city
和username
(它們是全局變量)被印刷到logcat的脫機即使當如預期。
但是當我嘗試訪問onCreateView
方法時,我得到一個NullPointerException
。即使試圖訪問onCreateView方法中的FirebaseUser
對象也會返回null。這很奇怪,因爲onCreate()
被稱爲之前onCreateView()
在'onDataChange()'方法內部使用這些數據不會像更新UI(這正是我想要做的)之類的東西,因爲在這一點上所有的視圖都是空的。 –
如何將您的'mAuthListener'及其中的數據移動到'onCreateView()'方法?這對您的使用情況是否合理? –
檢索和訪問onCreateView中的數據工作得很好。謝謝 –