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();
答案 0 :(得分:0)
这种情况正在发生,因为当触发onClick()
方法时,您将布尔value
字段的值设置为false
。这意味着您的Firbease数据库不会发生变化,因为value
始终是相同的。
要解决此问题,您需要使用if statement
更改代码的逻辑。
onClick(...) {
if(value) {
//some code
} else {
//other code
}
}
希望它有所帮助。