我已在 firebase 数据库中添加了 imageUrl,当我尝试检索该 url 应用程序时崩溃了。 这是我的事件监听器代码:
DatabaseReference valueRef = myRef.child("Users").child(name);
valueRef.child("ProfileUrl").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
photoUrl= dataSnapshot.getValue(Uri.class);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
错误出现在使用 photoUrl 的第 5 行。
我已经定义了 myRef = database.getReference(); 并将 photoUrl 列为 Uri。但它仍然说无法将字符串转换为 uri。我不明白当所有内容都在 uri 中时,字符串从哪里来?
最佳答案
您应该首先将其作为字符串获取,然后解析为 URI。 URI 类不仅仅是 URL 字符串,这就是为什么您会收到无法转换错误的原因。数据库中有一个代表 URL 的字符串。
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String url = dataSnapshot.getValue(String.class);
photoUrl= Uri.parse( url );
Log.d("PHOTOURL", photoUrl.toString());
}
如果您想在 onDataChande 函数之外使用 photoUrl,您需要调用一个方法或在 onDataChange 中编写您的使用代码:
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String url = dataSnapshot.getValue(String.class);
photoUrl= Uri.parse( url );
usePhotoUrl();
}
然后在方法中使用它:
public void usePhotoUrl(){
//you can use phootUrl here
}
关于android - 检索 Firebase 数据库中存储的 url 时,应用程序崩溃并给出错误 Can't conversion object of type java.lang.String to type android.net.Uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50975571/