我想根据有多少用户使用相同代码进入房间来更新数据库中的条目。以下代码应该为每个变量减去1个单位:
private void updateRoom(String roomCode, int rowsT, int columnsT, int posX, int posY, String img){
Room room = new Room(rowsT, columnsT, posX - 1, posY- 1, img);
Map<String,Object> taskMap = new HashMap<String,Object>();
taskMap.put("posX",posX-1);
mDatabase.child("Rooms").child(roomCode).updateChildren(taskMap);
Map<String,Object> taskMap2 = new HashMap<String,Object>();
taskMap2.put("posY",posY-1);
mDatabase.child("Rooms").child(roomCode).updateChildren(taskMap2);
}
不幸的是,这段代码进入了一个无限循环,它不会停止从firebase数据库中减去posY和posX变量中的1个值。
我也尝试过使用对象,如下所示:
private void updateRoom(String roomCode, int rowsT, int columnsT, int posX, int posY, String img){
Room room = new Room(rowsT, columnsT, posX - 1, posY- 1, img);
Map<String,Object> taskMap = new HashMap<String,Object>();
taskMap.put("posX",posX-1);
mDatabase.child("Rooms").child(roomCode).setValue(room);
Map<String,Object> taskMap2 = new HashMap<String,Object>();
taskMap2.put("posY",posY-1);
mDatabase.child("Rooms").child(roomCode).setValue(room);
}
它仍然进入无限循环。可以停止此循环的唯一方法是强制关闭应用程序。
我只在android活动的“onCreate”方法中调用此函数:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
mDatabase = FirebaseDatabase.getInstance().getReference();
int rows = getIntent().getIntExtra("row",1);
int columns = getIntent().getIntExtra("column",1);
int posX = getIntent().getIntExtra("posX",1);
int posY = getIntent().getIntExtra("posY",1);
String img = getIntent().getStringExtra("img");
String roomCode = getIntent().getStringExtra("room");
//Code for setting a bitmap on the screen
getBitmapFromURL(filas,columnas,posX,posY,img);
int positionY=posY--;
int positionX=posX--;
//This is where I call the method described before
updateRoom(roomCode,rows,columns,positionX,positionY,img);
}
我用谷歌搜索了一下但是我从firebase找到的唯一方法是.setValue(它取代了db的当前值)和.updateChild(它更新当前值)但是它们都属于我上面描述的循环。有什么想法吗?