0
私のAndroidプロジェクトでFirebase-UIを電子メール/パスワードプロバイダで使用しています。データベースの構造は次のとおりです。サインアップにはデフォルト値を追加するfirebase
profiles
user-id
age
height
user-id
私は、デフォルト値を持つプロファイルに新しいノードを入力します。ユーザーは後で値を編集して保存することができます。既存のユーザーの場合、値を読み込んでUIに表示するだけです。私はChildEventListenerとdataSnapshot.hasChild(uid)を使って、ユーザーが既に存在していても動作していないかどうかを検出しようとしました。
mAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = mFirebaseAuth.getCurrentUser();
if(user != null)
{
onSignedInInitialize(user);
}
else
{
onSignedOutCleanup();
startActivityForResult(AuthUI.getInstance().createSignInIntentBuilder().setProviders(providers).build(), SIGN_IN);
}
}
};
これは私がしようとしたものです::これはAuthStateListenerある
private void onSignedInInitialize(final FirebaseUser user) {
userRef = mProfilesDBReference.child(user.getUid());
if(mValueEventListener == null)
{
mValueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.getValue() == null)
{
UserProfile profile = new UserProfile("username", null, 100, 100);
userRef.setValue(profile);
UpdateUI(profile);
}
else
{
UserProfile profile = dataSnapshot.getValue(UserProfile.class);
UpdateUI(profile);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
}
userRef.addValueEventListener(mValueEventListener);
}
私が共有したコードをご覧ください。 – JSmith
ありがとうございました:) – JSmith