【问题标题】:Why back/cancel click result doesn't work?为什么返回/取消点击结果不起作用?
【发布时间】:2015-09-07 05:04:50
【问题描述】:

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

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

【问题讨论】:

  • 在返回/取消时,您还需要发送请求代码。

标签: android android-intent camera


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多