Java 我的firebase数据库中的数据正在被覆盖。如何修复它?
我正在将多个编辑文本中的数据添加到我的firebase数据库中。它添加得很好,但当我再次尝试添加它时,它不会创建新对象。它覆盖了上一个Java 我的firebase数据库中的数据正在被覆盖。如何修复它?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在将多个编辑文本中的数据添加到我的firebase数据库中。它添加得很好,但当我再次尝试添加它时,它不会创建新对象。它覆盖了上一个 public class HomeActivity extends AppCompatActivity { Button logout; EditText etfinalyear,etcnic,etname,etpaygroup,etregion,etcurrentposition,etcurrentaddress,etphonenumber,e
public class HomeActivity extends AppCompatActivity {
Button logout;
EditText etfinalyear,etcnic,etname,etpaygroup,etregion,etcurrentposition,etcurrentaddress,etphonenumber,etmobilenumber;
FirebaseAuth mfirebaseauth;
Button btnsave;
private FirebaseAuth.AuthStateListener mauthstatelistener;
DatabaseReference reff;
users user;
ImageView ntc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
ntc = findViewById(R.id.ntc);
etfinalyear = findViewById(R.id.edittextfinyear);
etcnic = findViewById(R.id.edittextcnic);
etname = findViewById(R.id.edittextname);
etpaygroup = findViewById(R.id.edittextpaygroup);
etregion = findViewById(R.id.edittextregion);
etcurrentposition = findViewById(R.id.edittextcurrentposition);
etcurrentaddress = findViewById(R.id.edittextcurrentaddress);
etphonenumber = findViewById(R.id.edittextphonenumber);
etmobilenumber = findViewById(R.id.edittextmobilenumber);
btnsave = findViewById(R.id.save);
logout = findViewById(R.id.signout);
reff = FirebaseDatabase.getInstance().getReference().child("users");
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FirebaseAuth.getInstance().signOut();
Intent logout = new Intent(HomeActivity.this,LoginActivity.class);
startActivity(logout);
}
});
user = new users();
btnsave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Long phn = Long.parseLong(etphonenumber.getText().toString());
Long mob = Long.parseLong(etmobilenumber.getText().toString());
user.setCnic(etcnic.getText().toString());
user.setFinyear(etfinalyear.getText().toString());
user.setName(etname.getText().toString());
user.setPaygroup(etpaygroup.getText().toString());
user.setDirectorate(etregion.getText().toString());
user.setCurrentposition(etcurrentposition.getText().toString());
user.setResidentialaddress(etcurrentaddress.getText().toString());
user.setPhonenumber(phn);
user.setMobilenumber(mob);
reff.child("user1").setValue(user);
//reff.push().setValue(user);
Toast.makeText(HomeActivity.this, "Data Saved Successfully", Toast.LENGTH_SHORT).show();
}
});
}
}
每次你推同一个参考,这就是为什么它会被替换和
请确保传递的子方法
.child(“user1”)
中的字符串应与firebase中的完全相同。
,
试试这个-
user = new users();
btnsave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Long phn = Long.parseLong(etphonenumber.getText().toString());
Long mob = Long.parseLong(etmobilenumber.getText().toString());
user.setCnic(etcnic.getText().toString());
user.setFinyear(etfinalyear.getText().toString());
user.setName(etname.getText().toString());
user.setPaygroup(etpaygroup.getText().toString());
user.setDirectorate(etregion.getText().toString());
user.setCurrentposition(etcurrentposition.getText().toString());
user.setResidentialaddress(etcurrentaddress.getText().toString());
user.setPhonenumber(phn);
user.setMobilenumber(mob);
DatabaseReference newRef = reff.child("user1").push();
newRef.setValue(user);
//reff.push().setValue(user);
Toast.makeText(HomeActivity.this, "Data Saved Successfully", Toast.LENGTH_SHORT).show();
}
});
每次你推同一个参考,这就是为什么它会被替换和
请确保传递的子方法.child(“user1”)
中的字符串应与firebase中的完全相同。
,
试试这个-
user = new users();
btnsave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Long phn = Long.parseLong(etphonenumber.getText().toString());
Long mob = Long.parseLong(etmobilenumber.getText().toString());
user.setCnic(etcnic.getText().toString());
user.setFinyear(etfinalyear.getText().toString());
user.setName(etname.getText().toString());
user.setPaygroup(etpaygroup.getText().toString());
user.setDirectorate(etregion.getText().toString());
user.setCurrentposition(etcurrentposition.getText().toString());
user.setResidentialaddress(etcurrentaddress.getText().toString());
user.setPhonenumber(phn);
user.setMobilenumber(mob);
DatabaseReference newRef = reff.child("user1").push();
newRef.setValue(user);
//reff.push().setValue(user);
Toast.makeText(HomeActivity.this, "Data Saved Successfully", Toast.LENGTH_SHORT).show();
}
});
使用.setValue()
推到同一引用将覆盖该子项中的所有数据,要更新而不是替换它,您需要使用映射和更新子项
,以便只更新字段
HashMap<String,Object> mapData = new HashMap<>();
btnsave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Long phn = Long.parseLong(etphonenumber.getText().toString());
Long mob = Long.parseLong(etmobilenumber.getText().toString());
user.setCnic(etcnic.getText().toString());
user.setFinyear(etfinalyear.getText().toString());
user.setName(etname.getText().toString());
user.setPaygroup(etpaygroup.getText().toString());
user.setDirectorate(etregion.getText().toString());
user.setCurrentposition(etcurrentposition.getText().toString());
user.setResidentialaddress(etcurrentaddress.getText().toString());
user.setPhonenumber(phn);
user.setMobilenumber(mob);
//Update the map data
mapData.put("Cnic",user.getCnic());
mapData.put("Name",user.getName());
mapData.put("Paygroup",user.getPaygroup());
mapData.put("Directorate",user.getDirectorate());
mapData.put("CurrentPos",user.getCurrentposition());
mapData.put("ResidentialAddress",user.getResidentialAddress());
mapData.put("Phone",user.getPhoneNumber());
mapData.put("Mobile",user.getMobileNumber());
reff.child("user1").updateChildren(mapData);
Toast.makeText(HomeActivity.this, "Data Saved Successfully", Toast.LENGTH_SHORT).show();
}
});
使用.setValue()
推到同一引用将覆盖该子项中的所有数据,要更新而不是替换它,您需要使用映射和更新子项
,以便只更新字段
HashMap<String,Object> mapData = new HashMap<>();
btnsave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Long phn = Long.parseLong(etphonenumber.getText().toString());
Long mob = Long.parseLong(etmobilenumber.getText().toString());
user.setCnic(etcnic.getText().toString());
user.setFinyear(etfinalyear.getText().toString());
user.setName(etname.getText().toString());
user.setPaygroup(etpaygroup.getText().toString());
user.setDirectorate(etregion.getText().toString());
user.setCurrentposition(etcurrentposition.getText().toString());
user.setResidentialaddress(etcurrentaddress.getText().toString());
user.setPhonenumber(phn);
user.setMobilenumber(mob);
//Update the map data
mapData.put("Cnic",user.getCnic());
mapData.put("Name",user.getName());
mapData.put("Paygroup",user.getPaygroup());
mapData.put("Directorate",user.getDirectorate());
mapData.put("CurrentPos",user.getCurrentposition());
mapData.put("ResidentialAddress",user.getResidentialAddress());
mapData.put("Phone",user.getPhoneNumber());
mapData.put("Mobile",user.getMobileNumber());
reff.child("user1").updateChildren(mapData);
Toast.makeText(HomeActivity.this, "Data Saved Successfully", Toast.LENGTH_SHORT).show();
}
});