即使没有单击确定按钮,图像也会上传

时间:2017-06-21 13:04:08

标签: android picasso

我的博客应用程序应该在图像下方上传图像及其描述。我正在使用毕加索裁剪工具裁剪图像。

问题:我点击图片按钮上传图片然后从图库中选择图片,选择并裁剪图片后我改变主意并决定不上传图片按后退按钮。图像按钮中也没有显示任何内容。我只需输入说明并发布博客。当博客页面打开时,即使按下后退按钮而没有将图像上传到图像按钮,也可以看到上传了描述的图像,而我只想显示描述。为什么会这样?我是否必须编写一些特殊的条件代码来避免这种错误? 任何帮助表示赞赏。谢谢

注意:仅当我调整图像大小并按后退按钮而不上传图像时才会发生这种情况。如果我没有做任何调整大小并在选择图像后单击后退按钮,则问题不会出现。

代码:

 private ImageButton selectimage;
selectimage= (ImageButton) findViewById(R.id.imageSelect);
selectimage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent galleryIntent=new Intent(Intent.ACTION_GET_CONTENT);
                galleryIntent.setType("image/*");
                startActivityForResult(galleryIntent,GALLERY_REQUEST);
            }
        });



public void startposting(){
 StorageReference filepath=mstorage.child("Place_Image").child(imageUri.getLastPathSegment());
            filepath.putFile(imageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    @SuppressWarnings("VisibleForTests") Uri downloadUrl = taskSnapshot.getDownloadUrl();
                    DatabaseReference newPost = mDatabase.push();
                    newPost.child("description").setValue(desc);
                    newPost.child("image").setValue(downloadUrl.toString());


                }});


 @Override
    protected void onActivityResult(int requestCode,int resultCode,Intent data){
        super.onActivityResult(requestCode,resultCode,data);
        if(requestCode==GALLERY_REQUEST && resultCode==RESULT_OK){

            imageUri=data.getData();


            CropImage.activity(imageUri)
                    .setGuidelines(CropImageView.Guidelines.ON).setAspectRatio(3,2)
                    .start(this);
        }

        if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
            CropImage.ActivityResult result = CropImage.getActivityResult(data);
            if (resultCode == RESULT_OK) {
                Uri resultUri = result.getUri();
                imageUri=resultUri;
                selectimage.setImageURI(resultUri);
            } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
                Exception error = result.getError();
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

根据您的代码和说明,我猜:
选择图像并开始活动以裁剪图像后,您可以调用&#34; startActivtyForResult&#34; with requestCode = CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE。
当您按后退按钮取消操作时;第一个活动仍然在功能&#34; onActivityResult&#34;中获得回调,结果代码为&#34; RESULT_CANCEL&#34;。
所以你可以修改你的代码:

if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE && resultCode==RESULT_OK) {
 //your code

}