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



我有一个问题,在我的应用程序中使用相机。

当应用程序打开时,在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));
        }
    }

注:我已经尝试过"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));
            } 
        }
    }

我认为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();

哦。是我的错。我忘了在onResume中检查变量状态。现在它可以与旧代码一起工作。谢谢。

最新更新