为什么退回/取消点击结果不起作用?

时间:2015-09-07 05:04:50

标签: android android-intent camera

我在使用相机时遇到问题。

打开应用程序时,在ImageView中显示“no_photo”图像。

当我点击图片时,相机会以意图打开。

如果我得到图像,应用程序运行得很好。但是,如果我点击“返回”或“取消”,我的代码将无效。 我需要在ImageView上设置“no_photo”图像,但结果我有空页。

我尝试了各种方法,但它们也不起作用:

setImageResource();
setImageDrawable();

此代码调用相机:

CamPRW.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // create Intent to take a picture and return control to the calling application
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        MainPageActivity.fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // create a file to save the image
        intent.putExtra(MediaStore.EXTRA_OUTPUT, MainPageActivity.fileUri); // set the image file name

        //  start the image capture Intent
        startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

    }
});

OnActivityResult:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE && resultCode == MainPageActivity.RESULT_OK) {
            CamPRW.setImageURI(MainPageActivity.fileUri);
            CamPRW.setScaleX(-1.0f);
        } else{
            CamPRW.setImageDrawable(getResources().getDrawable(R.drawable.no_photo));
        }

    }

P.S。 我尝试使用“RESULT_CANCELED”代码,但它也不起作用

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
            if (resultCode == MainPageActivity.RESULT_OK) {
                CamPRW.setImageURI(MainPageActivity.fileUri);
                CamPRW.setScaleX(-1.0f);
            }
            if (resultCode == MainPageActivity.RESULT_CANCELED) {
                CamPRW.setImageDrawable(getResources().getDrawable(R.drawable.no_photo));
            } 
        }
    }

2 个答案:

答案 0 :(得分:0)

我认为onActivityResult接听电话/取消按钮 单击后面添加code snippet /取消按钮。在onActivityResult

中随意添加传递值并处理
  Bundle bundle = new Bundle();
  bundle .putString(key, value);
  Intent i = getIntent(); //gets the intent that called this intent
  i.putExtras(bundle);
  setResult(Activity.RESULT_OK, i);
  finish();

答案 1 :(得分:0)

喔。这是我的错。我忘了onResume中的变量状态检查。现在它适用于旧代码。谢谢。问题解决了。