捕获图片后转到下一个活动

时间:2015-04-17 14:19:06

标签: android android-activity

我的应用有一个帖子按钮。当用户点击它时,相机将直接打开,以便他可以拍照。

问题是,当用户捕获图片并单击勾选按钮时,应用程序崩溃。

我想在用户捕捉图片后转到下一个活动

这是我的代码

buttonSortCap.setOnClickListener(new btnTakePhotoClicker());

这是btnTakePhotoClicker类

class btnTakePhotoClicker implements Button.OnClickListener{
    public void onClick(View v){
        Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(camera, CAM_REQUEST);
    }
}

这是将图像放入位图的活动

public void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == CAM_REQUEST){
        Bitmap thum = (Bitmap) data.getExtras().get("data");
        imgTakenPhoto.setImageBitmap(thum);
    }
    ...
}

这是它在Android Studio中显示的内容

4-17 12:49:44.625    2278-2278/com.example.barakah E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.barakah, PID: 2278
    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1313, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.example.barakah/com.example.barakah.MainActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.deliverResults(ActivityThread.java:3365)
            at android.app.ActivityThread.handleSendResult(ActivityThread.java:3408)
            at android.app.ActivityThread.access$1300(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

我认为您需要使用以下内容 - if (requestCode == CAM_REQUEST && resultCode == RESULT_OK)

答案 1 :(得分:0)

首先,在这种情况下数据意图没有任何额外的东西,你需要调用它的getData()方法。其次,它返回图像的uri而不是实际图像。请尝试使用此代码:

if (requestCode == CAM_REQUEST && resultCode == Activity.RESULT_OK) {
    Uri image_uri = data.getData();
    Bitmap bmp = MediaStore.Images.Media.getBitmap(this.getContentResolver(), image_uri);
    imgTakenPhoto.setImageBitmap(bmp);
}