我正在尝试使用以下代码更新特定孩子中的值。但是它不会更新该值,而是创建新节点并将该值插入该节点下。请检查下面的代码和firebase结构图片:
mach_vm_region
下面显示了火力地堡的图像:
firebase_wanted_change_value_here.jpg
等待解决方案。谢谢进阶
注意:我也使用updatechildren方法,但是它会删除所有Land_Info数据,然后将此值添加为新的引用
referenceUpdatedLand=FirebaseDatabase.getInstance().getReference("Land_Info");
Query queryUpdated =referenceUpdatedLand.orderByChild("Khatian").equalTo(landkhatin);
Toast.makeText(VehicleBookedLandActivity.this, ""+landkhatin, Toast.LENGTH_SHORT).show();
queryUpdated.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren())
{
int vehicleaviable= Integer.parseInt(avaiablecount);
String land_vehicle_type_aviable ="land_bike_available";
nowVehicleAvai=vehicleaviable-1;
String nowVehicleTypeAvaiable= String.valueOf(nowVehicleAvai);
HashMap<String, Object> map = new HashMap<>();
//map.put(land_vehicle_type_aviable,nowVehicleTypeAvaiable );
referenceUpdatedLand.child(land_vehicle_type_aviable).setValue(nowVehicleTypeAvaiable);
Intent intent = new Intent(getApplicationContext(), VehicleNavActivity.class);
startActivity(intent);
finish();
Toast.makeText(getApplicationContext(), "Sucessfull", Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
答案 0 :(得分:1)
我认为您的更新查询有误,请进行以下更改并尝试:
referenceUpdatedLand=FirebaseDatabase.getInstance().getReference("Land_Info");
Query queryUpdated =referenceUpdatedLand.orderByChild("Khatian").equalTo(landkhatin);
Toast.makeText(VehicleBookedLandActivity.this, ""+landkhatin, Toast.LENGTH_SHORT).show();
queryUpdated.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren())
{
int vehicleaviable= Integer.parseInt(avaiablecount);
String land_vehicle_type_aviable ="land_bike_available";
nowVehicleAvai=vehicleaviable-1;
String nowVehicleTypeAvaiable= String.valueOf(nowVehicleAvai);
HashMap<String, Object> map = new HashMap<>();
//map.put(land_vehicle_type_aviable,nowVehicleTypeAvaiable );
referenceUpdatedLand.child(dataSnapshot1.getKey())child(land_vehicle_type_aviable).setValue(nowVehicleTypeAvaiable); //change
Intent intent = new Intent(getApplicationContext(), VehicleNavActivity.class);
startActivity(intent);
finish();
Toast.makeText(getApplicationContext(), "Sucessfull", Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});