java - .setValue 和 .addValueListener 上的错误
问题描述
关于如何将图像保存在 Firebase 存储中,我有一些编码错误。并有 2 个错误...有人可以帮助我...我的 logcat 如下...
1) 错误:找不到符号方法 setValue(String)
2) 错误:找不到符号方法 addValueEventListener()
storageImage.child("Tuition Image").setValue(downloadUrl)
.addOnCompleteListener(new OnCompleteListener<Void>()
{
@Override
public void onComplete(@NonNull Task<Void> task)
{
if (task.isSuccessful())
{
Intent ViewIntent = new Intent(AddAdsActivity.this, AddAdsActivity.class);
ViewIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(ViewIntent);
finish();
Toast.makeText(AddAdsActivity.this, "Tuition image has been successfully stored in Firebase Database", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
else
{
String message = task.getException().getMessage();
Toast.makeText(AddAdsActivity.this, "Error occured: " + message, Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
});
我的第二个错误...
storageImage.child(currentUserID).addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
if(dataSnapshot.exists())
{
image = dataSnapshot.child("Tuition Image").getValue().toString();
Picasso.get().load(image).placeholder(R.drawable.camera).into(TuitionImage);
}
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});
解决方案
解决方案:
先上传图片:
private void uploadImageAndGetURL(String ImageId) {
final StorageReference filePath = storageImage.child(ImageId + ".jpg");
UploadTask uploadTask = filePath.putFile(imageUri);
uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()) {
throw task.getException();
}
// Continue with the task to get the download URL
return filePath.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if (task.isSuccessful()) {
downloadURL = task.getResult().toString();
storeDataToFirebase();
} else {
Toast.makeText(AddAdsActivity.this, "There has bean a problem in the database.", Toast.LENGTH_SHORT).show();
loadingBar.dismiss();
}
}
});
}
然后上传数据:
private void storeDataToFirebase() {
String id = databaseAdvertisement.push().getKey();
Advertisement advertisement = new Advertisement(id, downloadURL, tuitioname, providername, providergender, tuitionaddress, tuitionyear, tuitioncontactnumber, tuitionemail, tuitionsubject, tuitionprice, tuitionclasssize);
databaseAdvertisement.child(id).setValue(advertisement)
.addOnSuccessListener(new OnSuccessListener<Void>()
{
@Override
public void onSuccess(Void aVoid)
{
Toast.makeText(AddAdsActivity.this, "Advertisement added successfully!", Toast.LENGTH_SHORT).show();
Intent ViewAdsIntent = new Intent(AddAdsActivity.this, ViewAdsActivity.class);
ViewAdsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(ViewAdsIntent);
finish();
loadingBar.dismiss();
}
})
.addOnFailureListener(new OnFailureListener()
{
@Override
public void onFailure(@NonNull Exception e)
{
Toast.makeText(AddAdsActivity.this, "Failed to save the advertisement data. Please try again.", Toast.LENGTH_LONG).show();
loadingBar.dismiss();
}
});
}
而且,就是这样。
推荐阅读
- javascript - for循环迭代2个不同长度的数组,如果较大的一个包含另一个的属性,则提取属性(javascript)
- c++ - 如何始终启用智能感知中的所有建议?
- android-emulator - 错误@wdio/cli:utils:“onPrepare”挂钩中的服务失败错误:Appium 在超时之前退出(退出代码:1)-Appium 在 VSCode 中使用模拟器
- acumatica - 在销售报价屏幕 CR304500 中创建操作时出错
- firebase - Firebase Flutter错误尝试在空对象引用上调用虚拟方法'java.lang.Class java.lang.Object.getClass()'
- php - 127.0.0.1 重定向你太多次 - Laravel 8.x
- jekyll - 使用 jekyll 更改个人站点配置
- javascript - 如何升级 AngularJs 应用程序
- cherrypy - 无法通过 external_auth SaltStack 通过位置参数限制 API 访问
- java - Smali - 无法调用实例构造函数