我可以使用 imgaeButton 将图片上传到 Firebase 存储吗?



我在android中使用imageView时尝试上传图像,它确实成功上传了图像。但是当我使用imageButton代替imageView时,我得到了错误。

imageButton.setDrawingCacheEnabled(true);
imageButton.buildDrawingCache();
Bitmap bitmap = imageButton.getDrawingCache();
ByteArrayOutputStream boas = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, boas);
imageButton.setDrawingCacheEnabled(false);
byte[] data = boas.toByteArray();
String path = "firememes/" + UUID.randomUUID() + ".png";
StorageReference firememRef = storage.getReference(path);

我收到此错误

07-19 17:17:17.154 21469-21469/com.umer.listview D/AndroidRuntime: Shutting down VM
07-19 17:17:17.154 21469-21469/com.umer.listview E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.umer.listview, PID: 21469
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
 at com.umer.listview.MainActivity$2.onClick(MainActivity.java:125)
 at android.view.View.performClick(View.java:5204)
 at android.view.View$PerformClick.run(View.java:21153)
 at android.os.Handler.handleCallback(Handler.java:739)
 at android.os.Handler.dispatchMessage(Handler.java:95)
 at android.os.Looper.loop(Looper.java:148)
 at android.app.ActivityThread.main(ActivityThread.java:5417)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

实际上,您正在尝试将图像设置为空对象,这意味着在这种情况下,android找不到该对象,在这种情况下,您的ImageButton设置从DB获取的图像的位置,这意味着您必须初始化具有按钮的活动,然后才能从Firebase将图像设置为它。

最新更新