我有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 回答
发生这种情况是因为当触发
onClick()
方法时,您将布尔值value
字段的值设置为false
. 这意味着您的Firbease数据库不会发生任何变化,因为value
始终是相同的 .要解决此问题,您需要使用
if statement
更改代码的逻辑 .希望能帮助到你 .