首页 文章

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

提问于
浏览
0

我有Firebase数据库的以下问题 .

Scenario:

我有一个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,反之亦然 .

Problem:

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

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

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

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

说实话.....我真的生气了服务:(

Update (Answer):

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

FirebaseDatabase.getInstance().goOffline();

1 回答

  • 0

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

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

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

    希望能帮助到你 .

相关问题