私はfirebaseデータベースにユーザの一意のIDを格納するアンドロイドアプリを開発中ですので、これを達成するために、 "Users"という名前のルートを作成し、すべてを保存しますこのルート内のユーザーの一意のID。firebaseデータベースのonChildAddedイベントの発生を制御する
一意性をチェックするには、 "Users"の各子を調べなければならず、一意性をチェックした後、 "Users" rootにuniqueIDを追加するか、uniqueIdが利用できないことをユーザーに通知します。 OnChildAddedイベントの
私は一意性をチェックすると、それが発生した後に(私のコードに記載された)いくつかのコードを実行する方法、条件式(/他の場合には)OnChildAddedイベントの発生前に実行します
マイコード
postBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!uniqueIdText.getText().toString().trim().equals("")) {
uniqueness = true;
users.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot.getKey().equals(uniqueIdText.getText().toString().trim()))
uniqueness = false;
}
@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) {
}
});
}
else if(uniqueIdText.getText().toString().trim().equals(""))
Toast.makeText(LoginActivity.this,"Please enter id",Toast.LENGTH_LONG).show();
//======================How to execute it(code below) after occurrence of OnChildAdded event====================
if (uniqueness){
DatabaseReference usersInfo = users.child(uniqueIdText.getText().toString().trim());
startActivity(new Intent(LoginActivity.this, MainActivity.class));
}
else{
if(!uniqueIdText.getText().toString().trim().equals(""))
Toast.makeText(LoginActivity.this, "ID not available, Please enter a new one", Toast.LENGTH_SHORT).show();
}
}
});