2016-01-17 7 views
12

私のアプリケーションでは、私はカメラ機能を持っています。ユーザーは画像をキャプチャするか、ギャラリーから選択できます。クリックすると送信ボタンイメージが選択されていない場合、以前のアクティビティに既定のイメージを渡す方法

アクティビティBは

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     switch (requestCode) { 
      case RESULT_LOAD_IMAGE: 
       if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK & null != data) { 
        selectedImage = data.getData(); 
        imageView.setImageURI(selectedImage); 
       } 

       break; 

      case REQUEST_IMAGE_CAPTURE: 
       if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
        try { 
         selectedImage = imageUri; 
         getContentResolver().notifyChange(selectedImage, null); 
         imageView.setImageURI(null); 
         imageView.setImageURI(imageUri); 
        } catch (Exception e) { 
         Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT) 
           .show(); 

        } 
       } 
     } 
    } 

submit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent returnIntent = new Intent(); 
       if(selectedImage!=null) { 
        returnIntent.putExtra("img_uri", selectedImage.toString()); 
       } 
       setResult(Activity.RESULT_OK, returnIntent); 
       finish(); 
      } 
     }); 

、それは前の活動に戻ります。

活動

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode == RESULT_OK) { 
      if (requestCode == PROJECT_REQUEST_CODE) { 
       imgURI = Uri.parse(data.getStringExtra("img_uri")); 
       if (mClickedPosition == -1) { 
        if (obj != null) 
         obj.addNewItem(imgURI); 
       } else { 
        if (obj != null) 
        obj.changeItem(mClickedPosition, imgURI); 
       } 
      } 
     } 
    } 

私の質問は今 、ユーザが任意の画像を選択しなかった場合のアクティビティAにデフォルトの画像を渡す方法ですか?

何の画像が選択されていない場合はこれがアクティビティB

<ImageView 
       android:paddingTop="30dp" 
       android:layout_gravity="center" 
       android:layout_width="330dp" 
       android:layout_height="wrap_content" 
       android:adjustViewBounds="true" 
       android:src="@mipmap/no_image" 
       android:scaleType="fitXY" 
       android:id="@+id/imageView" 
       android:layout_weight="0.50" /> 

のXML imageViewですが、私は活動Bに@mipmap/no_imageリターンはそれが可能ですしたいですか?ありがとう。

+0

'default'を' default'に追加してイメージを設定してください。 –

+0

@dieter_hスイッチのデフォルトはどこに追加しますか?アクティビティA? –

+0

URIはstringのサブクラスです。あなたのコードのどこにデフォルトURIがありますか? – danny117

答えて

0

コード:

submit.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent returnIntent = new Intent(); 
     if(selectedImage!=null) { 
      returnIntent.putExtra("img_uri", selectedImage.toString()); 
     } else { 
      returnIntent.putExtra("img_uri", Uri.parse("android.resource://your.package.name/mipmap/no_image").toString()); 
     } 
     setResult(Activity.RESULT_OK, returnIntent); 
     finish(); 
    } 
}); 

が次にあなたがImageViewで画像を表示するためにいつものウリとしてそれを使用することができます:あなたは、次の方法でリソースに保存された画像のURIを渡すことができ

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     switch (requestCode) { 
      case RESULT_LOAD_IMAGE: 
       if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK & null != data) { 
        selectedImage = data.getData(); 
        imageView.setImageURI(selectedImage); 
       }else{ 
        //set default 
       } 

       break; 

      case REQUEST_IMAGE_CAPTURE: 
       if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
        try { 
         selectedImage = imageUri; 
         getContentResolver().notifyChange(selectedImage, null); 
         imageView.setImageURI(null); 
         imageView.setImageURI(imageUri); 
        } catch (Exception e) { 
         Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT) 
           .show(); 
        } 
       }else{ 
        //set default 
       } 
      default{ 
        //set default 
       } 
    } 
+0

あなたの答えをありがとう。しかし、@mipmap/no_imageをimageViewに設定するにはどうすればいいですか? –

+0

イメージを 'drawable' [hdpi、xhdpi、etc]フォルダに追加し、' imageView.setImageResource(R.drawable。) 'をセットしてください。 –

+0

他の人の中に? –

1

Byデフォルト設定値selectedImageを「デフォルト」に設定します。 imageUri

if(imageUri.equalsIgnoreCase("default")) 
    // set your default image that is @mipmap/no_image 
else 
    // set image you are getting from imageUri 
0

に渡さあなたaddNewItem()changeItem()チェック値で今すぐ

あなたが他の人が書いた様活性Aにデフォルトの画像を返す必要はありません、あなただけのときの条件のために準備する必要がありユーザーは画像を選択しません。 アクティビティAのonActivityResultを次のように変更してください。

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if(data!=null){ 
     switch (requestCode) { 
      case RESULT_LOAD_IMAGE: 
       if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK) { 
        selectedImage = data.getData(); 
        imageView.setImageURI(selectedImage); 
       } 
       break; 

      case REQUEST_IMAGE_CAPTURE: 
       if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
        try { 
         selectedImage = imageUri; 
         getContentResolver().notifyChange(selectedImage, null); 
         imageView.setImageURI(imageUri); 
        } catch (Exception e) { 
         Toast.makeText(this, "Failed to load", Toast.LENGTH_SHORT).show(); 
        } 
       } 
       break; 

      default: 
      //Your default image goes here, when the user doesn't select either of the two options 
      imageView.setImageResource(R.drawable.<default_image>); 
       break; 
     } 
} 
関連する問題