2017-06-21 3 views
0

私のブログアプリは、画像とその説明を画像の下にアップロードすることになっています。私は画像をトリミングするためにピカソ作物ツールを使用しています。OKボタンがクリックされていなくても画像がアップロードされます

問題:イメージボタンをクリックして画像をアップロードし、ギャラリーを選択して画像を選択してから画像を選択してから画像をアップロードし、画像をアップロードせずに単に戻るボタンを押してください。画像ボタンには何も表示されません。私は単に説明を入力し、ブログを投稿します。ブログのページが開くと、画像ボタンに画像をアップロードせずに戻るボタンを押しても画像がアップロードされて表示されますが、説明のみを表示したかったのです。なぜこうなった?私はそのようなバグを避けるために特別な条件付きコードを書く必要がありますか? 何か助けていただければ幸いです。ありがとうございます

注:画像をサイズ変更し、アップロードせずに戻るボタンを押した場合にのみ発生します。画像を選択した後でサイズ変更をして戻るボタンをクリックしないと、問題が発生しません。

コード:

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

はあなたのコードと説明をよると、私は推測する:
あなたが画像を選びまして、それをトリミングする活動を開始した後、あなたはrequestCode = CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODEで「startActivtyForResult」と呼んでいます。
アクションをキャンセルするために戻るボタンを押すと、最初のアクティビティは関数 "onActivityResult"でコールバックを取得し、結果コードは "RESULT_CANCEL"になります。
だから、あなたがこのようにコードを変更することができます。

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

}

+0

がご提案いただきありがとうございます。この問題を解決するお手伝いをすることができます。私はあなたが言ったようにしたが、問題はまだ残っている。 –

+0

ここにブレークポイントを追加:super.onActivityResult(...) – banking

関連する問題