java - 如何从覆盖方法java调用值?
问题描述
我如何从覆盖方法中获取价值?
这是我的代码,我厌倦了设置 urlsetValue(url)
但我无法获得
String url =dlUri.toString(); this value
child("downloadurl").setValue(url);
public void upload(View view){
UUID uuidImage = UUID.randomUUID();
String imageName = "images/"+uuidImage+".jpg";
final StorageReference storageReference = mStorageRef.child(imageName);
storageReference.putFile(selected).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@SuppressWarnings("VisibleForTests")
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
UUID uuid = UUID.randomUUID();
final String uuidString = uuid.toString();
storageReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Uri dlUri = uri;
String url =dlUri.toString();
}
});
FirebaseUser user = mAuth.getCurrentUser();
String userEmail = user.getEmail().toString();
String userComment = commentText.getText().toString();
myRef.child("Posts").child(uuidString).child("useremail").setValue(userEmail);
myRef.child("Posts").child(uuidString).child("comment").setValue(userComment);
myRef.child("Posts").child(uuidString).child("downloadurl").setValue(url);
Toast.makeText(getApplicationContext(),"Post Shared",Toast.LENGTH_LONG).show();
Intent intent = new Intent(getApplicationContext(), FeedActivity.class);
startActivity(intent);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getApplicationContext(), e.getLocalizedMessage(),Toast.LENGTH_LONG).show();
}
});
}
解决方案
这是因为String url = dlUri.toString();
不在您要访问的范围内。你为什么不把你所有的代码都移到里面onSuccess()
,因为我假设你无论如何都需要等待这个值?
推荐阅读
- python - Python 的 re.findall 似乎在不在函数中时工作,但在函数中时失败
- c++ - 带有结构和数组的 GLSL/C++ std140 布局
- python - 满足条件时不执行第三个 ELIF 语句。在我重新运行代码后执行。Python
- javascript - 我在哪里运行 Jest 中测试设置所需的异步代码?
- ios - 如何从数组中获取 NSManaged Object ID 并将其删除?
- python - 我应该如何自动填充一个字段并在 django 中使其只读?
- sql - SQL Server 中的两个问题
- reactjs - 如何使用reactjs将评论计数分配给帖子
- html - html表单的移动视图响应
- sql - postgres 删除总计数较低的行