我正在使用android应用程序,我想从Firebase获取图像并将其显示在Imageview中。我的代码可以运行,但是该图像无法在虚拟或真实设备上显示。 我试图显示一个简单的图像,但它也无法显示任何内容,因此我尝试将其设置为背景图像,并且可以正常工作。所以我不确切知道问题所在
我的Mainactivity.java:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notificationdisplay);
FirebaseApp.initializeApp(this);
final TextView title = (TextView)findViewById(R.id.title);
final TextView text = (TextView)findViewById(R.id.t);
//--------------------String text1="";
FirebaseDatabase.getInstance().getReference().child("notification").child("text").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.v("text:",dataSnapshot.getValue().toString());
text.setText(dataSnapshot.getValue(String.class));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
//-----------------title
FirebaseDatabase.getInstance().getReference().child("notification").child("title").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Log.v("title:",dataSnapshot.getValue().toString());
title.setText(dataSnapshot.getValue(String.class));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
//-----------------Image
ImageView image = (ImageView)findViewById(R.id.imageView);
String url = "gs://my-map-1552492593540.appspot.com/ala.png";
Glide.with(getApplicationContext()).load(url).into(image);
}
并且xml文件包含:
</TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="15dp"
android:text="This is my title field"
android:id="@+id/title"
android:gravity="center"
android:layout_gravity="center"
android:textAlignment="center"
<ImageView
android:id="@+id/imageView"
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_weight="1"
android:paddingTop="100dp"
android:paddingLeft="40dp"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</LinearLayout>
<TextView
android:id="@+id/t"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="40dp"
android:paddingTop="50dp"
android:paddingRight="40dp"
android:text="This is my text field when I want to display my fire base data."
android:textSize="20dp"></TextView>
<ImageView
android:id="@+id/imageView2"
android:layout_width="40dp"
android:background="@drawable/ic_add_alert_black_24dp"
android:layout_height="40dp" />
答案 0 :(得分:1)
答案 1 :(得分:0)
gs://my-map-1552492593540.appspot.com/ala.png
是对Google Cloud Storage上文件的引用。但是Glide无法识别这种URL格式,因此它将无法显示图像。
要在Glide中显示图片,您需要get the so-called download URL。
类似的东西:
String url = "gs://my-map-1552492593540.appspot.com/ala.png";
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference ref = storage.getReferenceFromUrl(url);
storageRef.child("users/me/profile.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Glide.with(getApplicationContext()).load(uri.toString).into(image);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});