Firebase实时数据库不是从Android编写的

时间:2017-09-07 06:57:07

标签: android database firebase firebase-realtime-database

Firebase数据库存在以下问题。

情境:

我有一个Android应用程序和Firebase项目。它们在控制台中链接,我希望将应用程序中的数据写入Firebase。 Firebase的初始设置已经完成,我在应用程序中有一个点击监听器,一旦按下,就会执行以下代码:

private boolean value = true;
......
onClick(...) {
    value = !value;
    FirebaseApp.initializeApp(this);
    final FirebaseDatabase database = FirebaseDatabase.getInstance();
    final DatabaseReference ref = database.getReference("info");
    ref.child("user").child("name").child("settings").setValue(value);
}

在我看来,期望的结果是值变化,“/ user / name / settings /”从true变为false,反之亦然。

问题:

问题出现了。在第一个应用程序启动时,数据已成功发送到Firebase并且值已更改(从true更改为false或反之亦然)。然后无论我按下按钮多少次,都没有任何反应。我试图杀死应用程序,再次启动它等等,但没有。为了在“实时”数据库中写入内容,我必须卸载该应用并将其再次部署到手机中。

我尝试从点击侦听器代码中记录一些内容,所有内容都正确执行,值完全符合预期。试图添加onSuccess,onFailure和onComplete回调......甚至没有任何东西被解雇。

我正在使用最新版本的库(11.2),我在清单中有互联网许可,手机已连接且有互联网。

要监控数据更改,我正在使用Firebase控制台。

说实话.....我真的很生气:(

更新(答案):

当然问题取决于我......在我的一个根分片类中,我有以下OLD代码,这引起了麻烦:

FirebaseDatabase.getInstance().goOffline();

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为当触发onClick()方法时,您将布尔value字段的值设置为false。这意味着您的Firbease数据库不会发生变化,因为value始终是相同的。

要解决此问题,您需要使用if statement更改代码的逻辑。

onClick(...) {
    if(value) {
        //some code
    } else {
        //other code
    }
}

希望它有所帮助。