【发布时间】:2018-04-27 11:35:10
【问题描述】:
在这里,我在注册过程中使用“firstName”、“lastName”、“email”、“password”创建了一个“Firebase”用户。成功登录后,我使用新的两个“Edittext”将所有注册值加载到另一个屏幕。现在我需要通过“Firebase”“userId”更新该注册表,并使用新的两个值“国家”和“职业”输入新的“ EditText'。为了完成注册过程并添加新值,我使用了“UserProfileBean”类。
下面是代码。
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("new_user");
FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();
String userid=user.getUid();
final UserProfileBean userProfileBean = new UserProfileBean();
userProfileBean.setCountry(country.getText().toString());
userProfileBean.setOccupation(occupation.getText().toString());
Log.d("UPDATE_PROFILE", "UPDATE_PROFILE_DATA" + userid + "," +
userProfileBean.getOccupation() + ", " + userProfileBean.getCountry());
//myRef.child(userid).child("country").setValue(userProfileBean.getCountry());
Query pendingTasks = myRef.child(userid).orderByChild("country").equalTo("");
pendingTasks.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot tasksSnapshot) {
for (DataSnapshot snapshot: tasksSnapshot.getChildren()) {
snapshot.getRef().child("country").setValue(userProfileBean.getCountry());
snapshot.getRef().child("occupation").setValue(userProfileBean.getOccupation());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getMessage());
}
});
以上代码由按钮'onclickListener'实现。
【问题讨论】:
-
new_user 数据库的用户表在注册过程中没有输入国家和职业值。在注册过程之后,我需要将这两个值都输入到用户表中。
-
有什么问题? IE。当您通过调试器运行代码时,它会进入
onDataChange吗?它会进入循环吗?如果您再查看snapshot.getKey(),它是否具有您期望的价值? Stack Overflow 是一个非常低效的交互式调试器,因此您必须在运行代码时告诉我们发生了什么。 -
@Frank van Puffelen:代码在 onDataChange 内部。不是for循环,public void onDataChange(DataSnapshot tasksSnapshot) { Log.d("UPDATE_PROFILE", "INSIDE_DATACHANGED"); for (DataSnapshot 快照: tasksSnapshot.getChildren()) { Log.d("UPDATE_PROFILE", "INSIDE_LOOP"); snapshot.getRef().child("country").setValue(userProfileBean.getCountry()); snapshot.getRef().child("职业").setValue(userProfileBean.getOccupation()); } }
-
您的一些问题需要特别或优先关注。请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
标签: java android firebase firebase-realtime-database android-edittext