gpt4 book ai didi

java - ' com.google.firebase.database.DatabaseException: Serializing Arrays is not supported, please use Lists instead'是什么意思?

转载 作者:行者123 更新时间:2023-12-02 01:18:29 25 4
gpt4 key购买 nike

主要内容


public class SignupCarrier extends AppCompatActivity {

Button upProfile, upIDPhoto, upCriminalRecord, buttonSigningUp;
private Uri mProfilePic, mIdPhoto,mCriminalRecord;

FirebaseAuth mFirebaseAuth;
List<String> picturesUrls = new ArrayList<String>();



private StorageReference mStorageRef;
private StorageTask mUploadTask;
private static final int PICK_IMAGE_REQUEST_PROFILE = 1;
private static final int PICK_IMAGE_REQUEST_ID = 1;
private static final int PICK_IMAGE_REQUEST_CR = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signup_carrier);
mFirebaseAuth = FirebaseAuth.getInstance();
upProfile = (Button) findViewById(R.id.profilePic);
upIDPhoto = (Button) findViewById(R.id.idphotoPic);
upCriminalRecord = (Button) findViewById(R.id.criminalRecord);
buttonSigningUp = (Button) findViewById(R.id.buttonSigningUp);
mStorageRef = FirebaseStorage.getInstance().getReference("carriersPictures");

upProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openFileChooser(mProfilePic);
}
});
upIDPhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openFileChooser(mIdPhoto);
}
});
upCriminalRecord.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openFileChooser(mCriminalRecord);
}
});

buttonSigningUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

uploadFile(mProfilePic,"profilePicture");
uploadFile(mIdPhoto,"idPicture");
uploadFile(mCriminalRecord,"criminalRecordPicture");
picturesUrls.toArray(pictureUrls);


mFirebaseAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()) {
final CarrierUser carrierUser = new CarrierUser(

picturesUrls

);
FirebaseDatabase.getInstance().getReference("User")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid()).setValue(carrierUser).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()) {
Toast.makeText(SignupCarrier.this,"Your request has been sent for approval", Toast.LENGTH_LONG).show();

openLogin();

}
}
});
}
}
});



}
});

private String getFileExtension(Uri uri) {
ContentResolver cR = getContentResolver();
MimeTypeMap mime = MimeTypeMap.getSingleton();
return mime.getExtensionFromMimeType(cR.getType(uri));
}
private void uploadFile(Uri path,String forWho) {

if(path != null) {

StorageReference fileReference = mStorageRef.child(editemail.getText().toString()+"-"+forWho+"-"+System.currentTimeMillis()+getFileExtension(path));
mUploadTask = fileReference.putFile(path)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
picturesUrls.add(taskSnapshot.getUploadSessionUri().toString());
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(SignupCarrier.this, e.getMessage(),Toast.LENGTH_LONG).show();
}
});
}

}
private void openFileChooser( Uri urltoPhoto) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
if (urltoPhoto == mProfilePic) {
startActivityForResult(intent, PICK_IMAGE_REQUEST_PROFILE);
} else if (urltoPhoto == mIdPhoto) {
startActivityForResult(intent, PICK_IMAGE_REQUEST_ID);
} else if (urltoPhoto == mCriminalRecord) {
startActivityForResult(intent, PICK_IMAGE_REQUEST_CR);
}

}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if(requestCode == PICK_IMAGE_REQUEST_PROFILE && resultCode == RESULT_OK && data != null && data.getData() != null)
{
mProfilePic = data.getData();


}
if(requestCode == PICK_IMAGE_REQUEST_ID && resultCode == RESULT_OK && data != null && data.getData() != null)
{
mIdPhoto = data.getData();


}
if(requestCode == PICK_IMAGE_REQUEST_CR && resultCode == RESULT_OK && data != null && data.getData() != null)
{
mCriminalRecord = data.getData();


}
}

我收到该错误,仅将 3 个文件中的 2 个上传到存储,但数据库中缺少用户。在使用数组之前,我尝试使用列表,但出现同样的错误,也许我输入错误或者我不知道。您能帮我理解这个错误以及如何修复它吗?

更新!现在它可以工作,但是数据库中缺少字段 picturesURl。 新对象

public class CarrierUser {
public List<String> picturesUrls;
public CarrierUser() {
}

public CarrierUser(List<String> picturesUrls) {
this.picturesUrls = picturesUrls;
}
}

最佳答案

这是一个数组:

String[] pictureUrls = new String[picturesUrls.size()];

这是一个列表:

List<String> picturesUrls = new ArrayList<String>();

错误消息表明您无法序列化数组 - 因此请尝试将数组更改为要序列化的对象(CarrierUser)中的列表。

关于java - ' com.google.firebase.database.DatabaseException: Serializing Arrays is not supported, please use Lists instead'是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58166847/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com