【问题标题】:Firebase android problemsFirebase 安卓问题
【发布时间】:2017-01-14 00:28:47
【问题描述】:

我在 android studio 中使用 Firebase,我想做一个注册和登录项目。我可以将数据保存到 Firebase,但我无法检索数据。

在每个示例中,它都是实时的——比如,我们首先设置了一个监听器并保存数据——但我的只是存储和稍后检索。

有没有办法只检索数据? (我希望你能理解:()

public void onLogIn(View v){
    reference2 = fbData.getReference(loginId.getText().toString());
    reference2.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String gotPw = dataSnapshot.getValue(String.class);
            if(gotPw == loginPw.getText().toString()){
                Log.d("TEST","DONE");
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.d("TEST","ERROR");
        }
    });

}

这段代码甚至没有调用 onDataChange 方法。

【问题讨论】:

  • 从 Firebase 数据库中检索数据是通过附加一个监听器来完成的。如果您的onDataChange()onCancelled() 都没有被调用,很可能是您没有连接到网络。
  • 我不知道您是否已经通过其他方式检查过是否调用了 onDataChange,但是查看上面的代码,我不会依赖点击“DONE”日志。您正在比较字符串,您应该使用 .equals() 方法来比较字符串,而不是 ==。 stackoverflow.com/a/767379/5251523

标签: android firebase firebase-realtime-database


【解决方案1】:

在 java == 运算符中比较字符串并不总是返回 true,即使字符串值可能相同。

尝试做:

if(gotPw.equals(loginPw.getText().toString())){
            Log.d("TEST","DONE");
        }

【讨论】:

  • 好收获!我忽略了那个。
猜你喜欢
  • 2020-01-04
  • 2012-05-07
  • 2018-07-03
  • 2014-02-19
  • 2011-06-12
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多