我有2个活动将数据输入到同一个孩子的数据库中......我将数据放入第一个活动的数据库中,当我从第二个活动中放入时,它取代了现有的数据...我该如何添加没有替换...我不想添加一个活动的所有数据因为我需要传递很多可能返回null的字符串所以我该怎么做
第一项活动
addData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String name = input_name.getText().toString();
HashMap<String, String> userMap = new HashMap<>();
userMap.put("Unique", Uid);
userMap.put("Name", name);
// userMap.put("Status", "Hey There");
// userMap.put("Image", "Default");
// userMap.put("Thumb_image", "Default");
userMap.put("Phone_Number", mNumber);
mdatabase.setValue(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
第二项活动
private void updateDisplayPicture() {
HashMap<String, String> userMap = new HashMap<>();
userMap.put("Image", downloadUrl);
userMap.put("Thumb_image", "Default");
mdatabase.setValue(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Profile Successfully Updated", Toast.LENGTH_SHORT).show();
startActivity(new Intent(SetUpProfileDisplayPicture.this, HomeScreen.class));
finish();
}
}
});
答案 0 :(得分:0)
在第二个活动中,您添加的值将覆盖您在第一个活动中所拥有的值。
您需要将第一个活动中的值传递给第二个活动并再次添加:
HashMap<String, String> userMap = new HashMap<>();
userMap.put("Image", downloadUrl);
userMap.put("Thumb_image", "Default");
userMap.put("Unique", Uid);
userMap.put("Name", name);
userMap.put("Phone_Number", mNumber);
或者您可以在第二个活动中添加push()
,从而防止覆盖值:
mdatabase.push().setValue(userMap)
或者您可以使用updateChildren()
:
要同时写入节点的特定子节点而不覆盖其他子节点,请使用updateChildren()
方法。
HashMap<String, String> userMap = new HashMap<>();
userMap.put("Image", downloadUrl);
userMap.put("Thumb_image", "Default");
mdatabase.updateChildren(userMap);
更多信息:
https://firebase.google.com/docs/database/android/read-and-write#updating_or_deleting_data