0

他のアクティビティへのパス画像の送信とimageviewへの表示について聞きたい

BrowsePhoto.java

private static int PICK_FROM_FILE = 1;
private static int INTENT_IMAGE = 2;
private ImageButton buttonLoadImage;
private ImageButton reloadPhoto;
private ImageButton imagedone;
private ImageView mImageView;
private Uri mImageCaptureUri;
TextView textImagePath;

Uri imageUri = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    overridePendingTransition(R.anim.push_left_in, R.anim.hold);
    setContentView(R.layout.browse);

    buttonLoadImage = (ImageButton) findViewById(R.id.btnLoadImage);
    imagedone = (ImageButton) findViewById(R.id.btnPhotoOk);
    reloadPhoto = (ImageButton) findViewById(R.id.btnReLoad);
    mImageView = (ImageView) findViewById(R.id.iv_pic);
    textImagePath = (TextView) findViewById(R.id.imagepath);

    buttonLoadImage.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);

            startActivityForResult(
                    Intent.createChooser(intent, "Complete action using"),
                    PICK_FROM_FILE);

            buttonLoadImage.setVisibility(View.INVISIBLE);
            imagedone.setVisibility(View.VISIBLE);
            reloadPhoto.setVisibility(View.VISIBLE);
        }
    });

    findViewById(R.id.btnPhotoOk).setOnClickListener(this);
    findViewById(R.id.btnReLoad).setOnClickListener(this);

}

public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btnPhotoOk:
        moveToEditPhotoDrawerActivity();

        break;
    case R.id.btnReLoad:
        backToBrowsePhotoDrawerActivity();
        break;
    default:
        break;
    }
}

private void moveToEditPhotoDrawerActivity() {
    Intent intent = new Intent();
    startActivityForResult(intent, INTENT_IMAGE);
}

private void backToBrowsePhotoDrawerActivity() {
    Intent intent = new Intent(this, BrowsePhoto.class);
    startActivity(intent);
}

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

    if (resultCode != RESULT_OK)
        return;

    Bitmap bitmap = null;
    String path = "";

    if (requestCode == PICK_FROM_FILE) {
        mImageCaptureUri = data.getData();

        path = getRealPathFromURI(mImageCaptureUri);

        if (path == null)
            path = mImageCaptureUri.getPath();

        if (path != null)
            bitmap = BitmapFactory.decodeFile(path);
    } else {
        path = mImageCaptureUri.getPath();
        bitmap = BitmapFactory.decodeFile(path);


    }

    mImageView.setImageBitmap(bitmap);

    textImagePath.setText(path.toString());

    if(requestCode == INTENT_IMAGE){
        Intent intent = new Intent(this, EditImage.class);
        intent.putExtra("intent_image", path);
        startActivity(intent);
    }

}

public String getRealPathFromURI(Uri contentUri) {
    String[] proj = { MediaStore.Images.Media.DATA };
    Cursor cursor = managedQuery(contentUri, proj, null, null, null);

    if (cursor == null)
        return null;

    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

    cursor.moveToFirst();

    return cursor.getString(column_index);
}

EditImage.java

    String picturePath = getIntent().getStringExtra("intent_image");
    ImageView imageView = (ImageView) findViewById(R.id.iv_pic);
    imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

SDカードから画像を読み込んだ後のスクリーンショット

![SD カードから画像を読み込んだ後のスクリーンショット][1]

正しいボタンをクリックすると、画像を編集する意図があります

コードから何が間違っていますか?あなたが私を助けてくれれば、あなたは私の時間を節約しました:(

4

2 に答える 2

0

説明によると、あるアクティビティから別のアクティビティに画像パスを渡したい場合は、最初に取得した画像パスが正しいかどうかを確認する必要があります。次に、別のアクティビティで、パスが正しく転送されているかどうかを確認します。

于 2013-07-24T03:13:56.593 に答える
0

からこれらの行を削除しますonActivityResult

if(requestCode == INTENT_IMAGE){
    Intent intent = new Intent(this, EditImage.class);
    intent.putExtra("intent_image", path);
    startActivity(intent);
}

と変更moveToEditPhotoDrawerActivityします

    private void moveToEditPhotoDrawerActivity() {
    Intent intent = new Intent(this, EditImage.class);
    intent.putExtra("intent_image", path);
    startActivity(intent);
}
于 2013-07-25T03:50:24.587 に答える