我正在尝试使用更新按钮的identity
方法更新用户的onClick
值,但是它不起作用并且没有值正在更新。
这是我的活动(我使用查询来获取用户的唯一ID):
public class Update extends AppCompatActivity {
EditText identity;
DatabaseReference ref;
Button update;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_check);
update = (Button) findViewById(R.id.button_update);
identity = (EditText) findViewById(R.id.edit_text_identity);
mStorageRef = FirebaseStorage.getInstance().getReference("uploads");
String key = getIntent().getExtras().get("androidId").toString();
final Query userQuery = FirebaseDatabase.getInstance().getReference().child("Users").orderByChild("androidId");
userQuery.equalTo(key).addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot foodSnapshot: dataSnapshot.getChildren()) {
final String userUID = foodSnapshot.getKey();
ref = FirebaseDatabase.getInstance().getReference().child(userUID);
identity.setText(getIntent().getStringExtra("identity"));
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ref.child("identity").setValue("noo");
}
});
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
}
);
}
}
我的数据库结构如下:
{
"Users" : {
"uid1" : {
"name" : "Josh",
"identity": "yes"
},
"uid2" : {
"name" : "June",
"identity": "no"
}
}
}
并且在logcat中没有显示错误。这里可能是什么问题?
答案 0 :(得分:1)
这里的问题是您使用的ref
并不完全指向您要更新的节点。您可以这样做:
update.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference().child("Users").child(uidYouWant);
rootRef.child("identity").setValue("noo");
}
});
也可以使用uidYouWant
和query
来遍历所有节点来获取所需的节点,而不是使用orderByChild()
,就像这样:
equalTo()