フラグメントがある場合、フラグメントが開始されたときにfirebaseのリアルタイムデータベースを照会する必要があります。 onCreateメソッドが実行されたときにデータベース接続コードを直接追加していますが、トーストを印刷するときにnullが返されます。クラス作成時にデータベースからデータを取得
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View r = inflater.inflate(R.layout.friends, container, false);
FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseUser user = mAuth.getCurrentUser();
FirebaseDatabase db = FirebaseDatabase.getInstance();
String userEmail = user.getEmail();
DatabaseReference userDetails = db.getReference("users").child(userEmail);
userDetails.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
myUser = dataSnapshot.getValue(User.class);
postCount = myUser.getTotalPosts();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Toast.makeText(getActivity(), "jjjjj " + postCount, Toast.LENGTH_SHORT).show();
だから、クラスが
static{
// everything in here from above code excluding the toast
}
に作成されたとき、これは最初に実行する必要がありますので、私は、私は、すべてのデータベース接続をラップしようとした静的ブロック内のコードを取得してなかった何私は、postCountを印刷しようとした再びonCreateView()
の内部にありますが、postCountがnullの場合と同じ結果が得られます
これをどのように克服できますか?私は私が聞いていたノードがデータベース
設定されているときにこの値を使用する必要があります。明らかにそれはondatachangeの中に設定されています – Selvin