gpt4 book ai didi

java.lang.String android.net.Uri.toString() 在空对象引用上,LogCat 在第 202 行显示此错误

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

我试图根据存储引用的图像路径是否为空来获取下载Url。

我尝试将整个代码放入 if else 语句中,而不是仅将值分配给解决错误的条件内的 download_uri 。我无法理解为什么这种方法有效而另一种方法无效。

    mSaveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String name=mProfileName.getText().toString();
if(!TextUtils.isEmpty(name) && mainImageUri!=null){
mProgressBar.setVisibility(View.VISIBLE);
if(isChanged){
//The task of storing the data goes through uploading the image as well.

user_id = mUser.getUid();

final StorageReference image_path= mStorageReference.child("profile_photo").child(user_id+".jpg");
image_path.putFile(mainImageUri).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>() {
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task) {
if(task.isSuccessful()){
storeFireStore(image_path,name);
}else{
String error = task.getException().getMessage();
Toast.makeText(SetUpActivity.this,"Image Error: "+error,Toast.LENGTH_SHORT).show();

}
mProgressBar.setVisibility(View.INVISIBLE);

}
});

}else{
//The task of storing the data does not go through uploading the image.
storeFireStore(null,name);
mProgressBar.setVisibility(View.INVISIBLE);
}
}

}
});

}

private void storeFireStore(StorageReference image_path, final String name) {
final Uri[] download_uri = new Uri[1];
if(image_path!=null){
image_path.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
download_uri[0] =uri;
Log.d(TAG,"Download Url obtained");
}
});
} else{
download_uri[0] =mainImageUri;
Log.d(TAG,"Download Url obtained in else");
}

Map<String,String> userMap=new HashMap<>();
userMap.put("image", download_uri[0].toString());//line 202 this is
where the error occurs.userMap.put("name",name);

我希望获得 downLoad_uri,但它提供了一个空值

最佳答案

image_path.getDownloadUrl().addOnSuccessListener() 是异步的,在操作结果完成之前立即返回。您的代码继续访问使用 null 值初始化的 download_uri 数组。您只能期望在回调完成后数组具有填充值。

关于java.lang.String android.net.Uri.toString() 在空对象引用上,LogCat 在第 202 行显示此错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56844642/

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