我正在创建数据库,如Firebase文档中所示。但是我遇到了数组错误。但是我没有使用任何数组。
这是我的代码:
private void addNewContact() {
if (!TextUtils.isEmpty(name.getText())){
if (!TextUtils.isEmpty(email.getText())) {
if (!TextUtils.isEmpty(phone.getText())){
Map<String, Object> newContact = new HashMap<>();
newContact.put(NAME_KEY, name.getText());
newContact.put(EMAIL_KEY, email.getText());
newContact.put(PHONE_KEY, phone.getText());
db.collection("PhoneBook").document("Contacts").set(newContact)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(FirebaseCloudActivity.this, "User Registered",
Toast.LENGTH_SHORT).show();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(FirebaseCloudActivity.this, "ERROR" + e.toString(),
Toast.LENGTH_SHORT).show();
Log.d("TAG", e.toString());
}
});
}
}
}
}
得到以下错误:-
java.lang.IllegalArgumentException:无法序列化对象。不支持序列化数组,请改用列表
答案 0 :(得分:1)
Firebase尝试序列化获取器,而firebase尝试序列化.getText()
的结果。
请将您的地图更改为此:
Map<String, Object> newContact = new HashMap<>();
newContact.put(NAME_KEY, name.getText().toString());
newContact.put(EMAIL_KEY, email.getText().toString());
newContact.put(PHONE_KEY, phone.getText().toString());
答案 1 :(得分:1)
更改:
newContact.put(NAME_KEY, name.getText());
收件人:
newContact.put(NAME_KEY, name.getText().toString());
Firebase尝试对getter进行序列化,这与Firebase尝试对.getText()的结果进行序列化的情况类似。