我正在使用Auth Firebase用户界面。它的工作原理如下: 用户第一次进行身份验证,之后在onCreate方法应用程序中,在Database中创建一个名为user + email + status的新用户。 但问题是它触发每个onCreate并将所有值都设置为默认值。例如,如果我在settingsActivity中更改状态,它将在数据库中更改,一切正常但在我再次运行应用程序并且MainActivity中的onCreate方法再次触发我的状态后再次成为默认值。我想用if / else语句检查值,并检查数据库中的值与默认值不同,但不知道如何获取该值。 也许你可以建议另一个场景? 无论如何,谢谢你的时间。
//Authstate Listener
mAuthstateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
Log.v(TAG, "user is not null");
//Create new user
String uid = user.getUid();
String userName = user.getDisplayName();
mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(uid);
HashMap<String, String> userMap = new HashMap<>();
userMap.put("name", userName);
userMap.put("status", "Your status is here...");
userMap.put("image", "default");
userMap.put("thumb_image", "default");
mDatabaseReference.setValue(userMap);
答案 0 :(得分:1)
您可以read data once使用SingleValueEventListener:
mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(uid);
mDatabaseReference.addListenerForSingleValueEvent(new ValueEventListener {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.child("image").getValue(String.class).equals("default"))
{
//the image is still the default one
}
else{
//the image is no longer the default
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});