无法将数据从Android发布到Firebase数据库

时间:2016-09-29 12:47:10

标签: android firebase firebase-realtime-database

我正在使用Firebase作为Android平台的聊天应用。我正在将此库用于Firebase数据库:

compile 'com.google.firebase:firebase-database:9.6.0' 

我按照here的所有步骤设置了我的项目。我为Firebase数据库的trueread权限设置了write

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

我正在使用以下代码将我的数据发布到Firebase数据库(按下代码块触发一次按钮):

String name = loyalUserText.getText().toString().trim();

FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference dbRef = db.getReference().child("name");
dbRef.setValue(name);
Log.e(TAG, "onClick: "+dbRef.toString());

我的日志会返回:

 E/LoginActivity: onClick:https://poztal-14f48.firebaseio.com/name

然后我检查了我的Firebase数据库,没有条目。它看起来很空洞。我创建了一个具有相同子名称("name")的子项,并在其中添加了一个新值。

但是这个值并没有反映到ValueEventListener我的应用中。问题是我的应用程序没有与firebase数据库通信。

更新

我在我的活动中实施的听众是OnCompleteListener<Void>

dbRef.setValue(name).addOnCompleteListener(this);

@Override
    public void onComplete(@NonNull Task<Void> task) {
        Log.e(TAG, "onComplete: " + task.isComplete());
        Log.e(TAG, "onComplete: " + task.toString());
    }

并且未找到此onComplete()块。

提前致谢。

2 个答案:

答案 0 :(得分:1)

请使用pojo类将您的值设置为firebase数据库,如下所示。

String name = loyalUserText.getText().toString().trim();
User user = new User();
user.setName(name);
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference dbRef = db.getReference().child("name");

dbRef.setValue(user);

答案 1 :(得分:0)

如果您尝试对名为[NAME]的字段插入name,请尝试Map

Map<String, String> param = new HashMap<>();
param.put("name", loyalUserText.getText().toString().trim());

Firebase reference = new Firebase(YOUR_FIREBASE_URL);
reference.push().setValue(param);