有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在未选择图像的情况下将默认图像传递给上一个活动

在我的应用程序中,我有一个摄像头功能。用户可以捕获图像或从图库中拾取

活动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();
            }
        });

单击“提交”按钮后,它将返回到上一个活动

活动A

  @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);
                }
            }
        }
    }

My question now is how to pass a default image to Activity A If user didn't select any image ?

这是活动B中的xmlimageView

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

如果未选择图像,我希望@mipmap/no_image返回活动B。是否可能?谢谢


共 (4) 个答案

  1. # 1 楼答案

    你不需要将默认图像返回活动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;
            }
     }
    
  2. # 2 楼答案

    代码:

        @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 
                     }
        }
    
  3. # 3 楼答案

    默认情况下,将selectedImage的值设置为“默认”

    现在在addNewItem()changeItem()检查imageUri中传递的值

    if(imageUri.equalsIgnoreCase("default"))
        // set your default image that is @mipmap/no_image
    else
        // set image you are getting from imageUri
    
  4. # 4 楼答案

    您可以通过以下方式传递存储在参考资料中的图像的Uri:

    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中显示图像