用户值未分配给Firebase数据库

时间:2018-11-15 00:05:08

标签: java android firebase firebase-realtime-database

现在,我已经设置了我的应用,以便用户可以创建一个开放游戏,然后玩家可以加入该开放游戏并成为user2或player2。这项工作只是找到,玩家单击加入按钮,并在大厅数据库中显示为“ user2”。如下图所示

enter image description here

这很简单,玩家制作一个user2等于null的游戏,然后当有人单击加入时,他们用用户信息替换null。这是玩家加入游戏时使用的代码。

private void joinGame() {
    second = new User(userName, 0, getSide(), FirebaseAuth.getInstance().getUid());
    gm.setUser2(second);
}

然后,只要有人单击“加入”,就会调用该方法。我还设置了一个Toast,通过调用

来显示user2的信息。
gm.getUser2().getUserName();

显示用户名,并且效果很好。所以我知道当我使用设置器setUser2(second)时,它可以正常工作

由于我的问题,这对我来说没有多大意义。有人加入游戏后,将删除“大厅”游戏,并添加一个活动的游戏数据库节点。

它是通过以下代码添加的:

public static FCGameMaker beginGame;

private void createGame() {
    beginGame = new FCGameMaker(gm.getUser1(), gm.getUser2(), false, false);
    FlipCoinGames.child(userName).setValue(beginGame);
}

这是我的FCGameMaker构造函数

public FCGameMaker(User player1, User player2, boolean gameStarted, boolean gameFinished) {
    this.player1 = player1;
    this.player2 = player2;
    this.gameStarted = gameStarted;
    this.gameFinished = gameFinished;
}

但是创建数据库后,player2不会出现。

这是调用createGame()方法后数据库的外观

enter image description here

我不知道为什么不添加第二个用户,因为我肯定在此createGame()方法之前调用了gm.setUser2(second),所以我不确定为什么不起作用。

有帮助吗?

private FCLobbyMaker gm;

gm = dataSnapshot.getValue(FCLobbyMaker.class);

然后我的FCGameMaker构造函数已经发布,该类的其余部分只是变量的获取器和设置器。

0 个答案:

没有答案