子リスナーがデータを読み込んでロードする前にFirebaseリファレンスを設定しようとしています。私はonCreateがonResumeの前にあることを知っていますが、下のコードは私のonResume()で設定したものと同じですので、下のコードと矛盾しているようです。 onCreateで設定したものは、onCreate()にあるものよりも前にはありません。データロード前にノードに子ノードがあるかどうかに応じてFirebaseの参照を変更する
なぜですか?
他のノードにまだユーザーとして登録されていないユーザーがいる場合は、データベースのテンプレートから読み取ろうとしています。 ヒントをいただければ幸いです。
p.s.私は参照をログアウトして、OnResume()内のログインも最初に行っています。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.services_activity);
app = FirebaseApp.getInstance();
database = FirebaseDatabase.getInstance(app);
auth = FirebaseAuth.getInstance(app);
storage = FirebaseStorage.getInstance(app);
username = auth.getCurrentUser().getUid();
databaseRef = database.getReference("serv_hst");
servTempltRef = database.getReference("serv_tmplt");
databaseRef.child(username).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
//I am trying to set my reference that I will use in OnResume() ..!!
if (dataSnapshot.hasChildren()) {
servTempltRef = database.getReference("serv_hst");
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
protected void onResume() {
super.onResume();
servTempltRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
コメントをいただきありがとうございます。私は今かなりの初心者でしたが、私は今ではありません。とにかくコメントを評価する – TheeBen