首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法将加载到ImageView中的图像上传到Firebase

无法将加载到ImageView中的图像上传到Firebase
EN

Stack Overflow用户
提问于 2019-12-27 19:04:06
回答 1查看 46关注 0票数 0

我已经成功地打开了摄像头,点击了图像并显示在InageView中,但是当我点击上传图像按钮时,执行的是"ELSE“条件而不是"if”条件

以下是我的活动代码:

代码语言:javascript
复制
chooseImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
                startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
            }

        }
    });

btnUploadImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (mUploadTask != null && mUploadTask.isInProgress()) {
                Toast.makeText(GalleryActivity.this, "Upload in progress", Toast.LENGTH_LONG).show();
            } else {
                uploadImage();
            }
        }
    });


@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK && data!=null) {
            Bundle extras = data.getExtras();
             imageBitmap = (Bitmap) extras.get("data");
            imgPreview.setImageBitmap(imageBitmap);
            imgUrl = data.getData();

        }
    }

下面是我的UploadImage方法:

代码语言:javascript
复制
 private void uploadImage() {
        if (imgUrl != null) {
            final StorageReference fileReference = mStorageRef.child(System.currentTimeMillis() + "." + "jpg");

            mUploadTask = fileReference.putFile(imgUrl)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                            Handler handler = new Handler();
                            handler.postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    uploadProgress.setProgress(0);
                                }
                            }, 500);


                            fileReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                @Override
                                public void onSuccess(Uri uri) {
                                    Upload upload = new Upload( uri.toString());
                                    String uploadID = mDatabaseRef.push().getKey();
                                    mDatabaseRef.child(uploadID).setValue(upload);
                                    Toast.makeText(GalleryActivity.this, "Upload successfully", Toast.LENGTH_LONG).show();
                                    imgPreview.setImageResource(R.drawable.imagepreview);
//                                    imgDescription.setText("");
                                }
                            });


                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Toast.makeText(GalleryActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                        }
                    })
                    .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                            double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
                            uploadProgress.setProgress((int) progress);
                        }
                    });
        } else {
            Toast.makeText(GalleryActivity.this, "No file selected", Toast.LENGTH_SHORT).show();
        }
    }

下面是我的布局XML代码:

代码语言:javascript
复制
    <ImageView
        android:id="@+id/imgPreview"
        android:layout_width="match_parent"
        android:layout_height="220dp"
        android:layout_below="@+id/txtUploadImage"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:src="@drawable/imagepreview" />

 <Button
        android:id="@+id/chooseImage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/uploadProgress"
        android:layout_marginTop="40dp"
        android:drawableStart="@drawable/icon_camera"
        android:text="Chooese Image from camera"
        android:textSize="18sp" />


 <Button
        android:id="@+id/btnUploadImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="20dp"
        android:layout_marginBottom="10dp"
        android:drawableStart="@drawable/icon_upload"
        android:text="Upload Image"
        android:textSize="18sp" />

UploadImage方法中的else条件是执行everyTime (未选择文件),如何成功获取URI并上传图片??

EN

回答 1

Stack Overflow用户

发布于 2019-12-27 19:56:23

代码语言:javascript
复制
 btnUploadImage.setOnClickListener(new.     
 View.OnClickListener() {
         @Override
        public void onClick(View view) {
            if (mUploadTask != null && 
  mUploadTask.isInProgress()) {
                 Toast.makeText(GalleryActivity.this, "Upload in.       
   progress", Toast.LENGTH_LONG).show();
             } else {
                 uploadImage();
             }
         }
});

在上面的代码中,您签入了if条件。

是否mUploadTask不为null,然后执行....这就是为什么要执行else的原因。

因为mUploadTask仍然是空的,即当您

单击upload按钮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59499821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档