在Android Studio中更新firebase数据库

时间:2018-03-29 05:10:20

标签: java firebase android-studio firebase-realtime-database

我想根据有多少用户使用相同代码进入房间来更新数据库中的条目。以下代码应该为每个变量减去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(它更新当前值)但是它们都属于我上面描述的循环。有什么想法吗?

0 个答案:

没有答案