Android 向Firestore发送电子邮件时出现不支持的类型错误
我在将数据(姓名、姓氏、电子邮件)保存到FireStore数据库时遇到问题。授权很有效-新用户正在添加。但我想将AndroidStudio的EditText类型中的这3个变量保存为Firebase的新文档。 但随后控制台中突然出现错误:Android 向Firestore发送电子邮件时出现不支持的类型错误,android,firebase,google-cloud-firestore,Android,Firebase,Google Cloud Firestore,我在将数据(姓名、姓氏、电子邮件)保存到FireStore数据库时遇到问题。授权很有效-新用户正在添加。但我想将AndroidStudio的EditText类型中的这3个变量保存为Firebase的新文档。 但随后控制台中突然出现错误: Process: com.example.poduszkowoapp, PID: 7276 java.lang.IllegalArgumentException: Invalid data. Unsupported type: androidx.appc
Process: com.example.poduszkowoapp, PID: 7276
java.lang.IllegalArgumentException: Invalid data. Unsupported type: androidx.appcompat.widget.AppCompatEditText (found in field Email)
at com.google.firebase.firestore.core.UserData$ParseContext.createError(com.google.firebase:firebase-firestore@@17.1.2:293)
at com.google.firebase.firestore.UserDataConverter.parseScalarValue(com.google.firebase:firebase-firestore@@17.1.2:405)
at com.google.firebase.firestore.UserDataConverter.parseData(com.google.firebase:firebase-firestore@@17.1.2:254)
at com.google.firebase.firestore.UserDataConverter.parseMap(com.google.firebase:firebase-firestore@@17.1.2:274)
at com.google.firebase.firestore.UserDataConverter.parseData(com.google.firebase:firebase-firestore@@17.1.2:230)
at com.google.firebase.firestore.UserDataConverter.parseSetData(com.google.firebase:firebase-firestore@@17.1.2:75)
at com.google.firebase.firestore.DocumentReference.set(com.google.firebase:firebase-firestore@@17.1.2:172)
at com.google.firebase.firestore.DocumentReference.set(com.google.firebase:firebase-firestore@@17.1.2:152)
at com.example.poduszkowoapp.RegisterActivity$1$2.onComplete(RegisterActivity.java:90)
at com.google.android.gms.tasks.zzj.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
出现问题时,注册活动中本节的代码:
fAuth.createUserWithEmailAndPassword(txtEmail.getText().toString(),txtPassword.getText().toString()).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful())
{
userID = fAuth.getCurrentUser().getUid();
Map<String, Object> userMap = new HashMap<>();
userMap.put("Name", txtName);
userMap.put("Surname", txtSurname);
userMap.put("Email", txtEmail);
fStore.collection("users").document(userID).set(userMap).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toast.makeText(RegisterActivity.this, "Registered succesfully", Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplicationContext(), MainActivity.class));
finish();
}
});
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
if(e instanceof FirebaseAuthUserCollisionException)
{
Toast.makeText(RegisterActivity.this, "This email address is already taken", Toast.LENGTH_LONG).show();
}
}
});
fAuth.createUserWithEmailAndPassword(txtmail.getText().toString(),txtPassword.getText().toString()).addOnCompleteListener(新OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful())
{
userID=fAuth.getCurrentUser().getUid();
Map userMap=newhashmap();
userMap.put(“Name”,txtName);
userMap.put(“姓氏”,txtnusname);
userMap.put(“Email”,txtEmail);
fStore.collection(“users”).document(userID).set(userMap.addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时公开作废(作废避免){
Toast.makeText(RegisterActivity.this,“已成功注册”,Toast.LENGTH_SHORT.show();
startActivity(新意图(getApplicationContext(),MainActivity.class));
完成();
}
});
}
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
if(FirebaseAuthUserCollisionException的实例)
{
Toast.makeText(RegisterActivity.this,“此电子邮件地址已被占用”,Toast.LENGTH_LONG.show();
}
}
});
让您的地图:
Map<String, Object> userMap = new HashMap<>();
userMap.put("Name", txtName.getText().toString());
userMap.put("Surname", txtSurname.getText().toString());
userMap.put("Email", txtEmail.getText().toString());
Map userMap=newhashmap();
userMap.put(“Name”,txtName.getText().toString());
userMap.put(“姓氏”,txtnamname.getText().toString());
userMap.put(“Email”,txtEmail.getText().toString());
您正在将EditText类型写入firestore,而不是其中的文本。看起来您正在将Android视图的实例传递给firestore:
Map<String, Object> userMap = new HashMap<>();
userMap.put("Name", txtName);
userMap.put("Surname", txtSurname);
userMap.put("Email", txtEmail);
userMap.put("Email", txtEmail.getText().toString());