gpt4 book ai didi

android - 当检索存储在 firebase 数据库中的 url 时,应用程序崩溃并给出错误 Can't convert object of type java.lang.String to type android.net.Uri

转载 作者:搜寻专家 更新时间:2023-11-01 07:43:10 25 4
gpt4 key购买 nike

我在 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 中,字符串从哪里来?

Firebase 数据库截图: enter image description here

最佳答案

您应该先将其作为字符串获取,然后再解析为 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 convert object of type java.lang.String to type android.net.Uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50975571/

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