2017-06-21 123 views
0

我的博客应用程序应该在图片下方上传图片及其说明。我正在使用毕加索裁剪工具裁剪图像。即使未点击确定按钮,图片也会上传

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

注意:它只发生在我调整图像大小并按下后退按钮而没有上传它。如果我没有做任何调整大小,并选择图像后单击后退按钮问题不会出现。

代码:

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(); 
      } 
     } 
    } 
+0

粘贴代码,以便其他有助于帮你解决这个问题 –

回答

0

根据您的代码和说明,我想:
后您选用的图像,并开始一个活动,裁剪,你叫“startActivtyForResult”与requestCode = CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE。
当您按下后退按钮取消您的操作时,第一个Activity仍然在函数“onActivityResult”中获得回调,结果代码为“RESULT_CANCEL”。
所以,你可以修改你的代码是这样的:

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

}

+0

谢谢您的建议。我尝试了你说的方式,但问题仍然存在。 –

+0

在这里添加一个断点:super.onActivityResult(...) – banking