Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的firebase数据库中的数据正在被覆盖。如何修复它?_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 我的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

我正在将多个编辑文本中的数据添加到我的firebase数据库中。它添加得很好,但当我再次尝试添加它时,它不会创建新对象。它覆盖了上一个

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();
            }
        });