我正在使用Firebase作为Android平台的聊天应用。我正在将此库用于Firebase数据库:
compile 'com.google.firebase:firebase-database:9.6.0'
我按照here的所有步骤设置了我的项目。我为Firebase数据库的true
和read
权限设置了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()
块。
提前致谢。
答案 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);