私のアプリケーションにオフラインパーシスタンスを追加したばかりです。 onCreate()メソッドでは、私は、このコードしている:フラグメントのonCreateViewのFirebase DatasnapshotデータにアクセスしようとするNullPointerExeception
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のデータを取得してアクセスするだけで問題ありません。ありがとうございます –