创建数据库时在Firebase云数据库中出现错误

时间:2019-07-24 12:36:59

标签: android google-cloud-firestore cloud

我正在创建数据库,如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:无法序列化对象。不支持序列化数组,请改用列表

2 个答案:

答案 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()的结果进行序列化的情况类似。