2017-06-21 72 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