无法在Firebase的“图像”视图中显示图像

时间:2019-11-12 02:09:16

标签: android firebase firebase-realtime-database

我正在使用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" />

2 个答案:

答案 0 :(得分:1)

您正在使用Firebase的STORAGE LOCATION,它将无法正常工作 您必须按照下图使用突出显示的下载URL

see below image

答案 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
    }
});