Android开发 - 新活动开放得太快了

时间:2017-02-27 16:55:49

标签: android android-studio

我正在制作一个拍照的应用,然后切换到新的活动。这是执行此操作的函数:

public void takePhoto(View view){
    final int REQUEST_IMAGE_CAPTURE = 1;

    // open camera
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if(takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }

    // open "Enter Info" screen
    startActivity(new Intent(MainActivity.this, EnterInfoActivity.class));
}

但是,“输入信息”活动会在相机前打开。我想在开始新活动之前打开相机。按“后退”将我带到相机,对我来说这意味着相机确实加载了,但活动的优先级更高。

3 个答案:

答案 0 :(得分:1)

private void captureImage() {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);

    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

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

in onActivityResult Open Your Second Activity

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // if the result is capturing Image
    if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            // successfully captured the image
            // display it in image view
            previewCapturedImage();
        } else if (resultCode == RESULT_CANCELED) {
            // user cancelled Image capture
            Toast.makeText(getApplicationContext(),
                    "User cancelled image capture", Toast.LENGTH_SHORT)
                    .show();
        } else {
            // failed to capture image
            Toast.makeText(getApplicationContext(),
                    "Sorry! Failed to capture image", Toast.LENGTH_SHORT)
                    .show();
        }
    }
}

moew info请参阅此http://www.androidhive.info/2013/09/android-working-with-camera-api/

答案 1 :(得分:1)

正如我所看到的,您正在使用startActivityForResult来启动照片活动,这意味着您打开的这个新Activity将返回一个调用方法onActivityResult的值。

实施该方法,并检查您是否来自照片的活动,然后打开下一个活动。

你的流程将是这样的:

  • 开始照片活动
  • 当照片活动结束时,方法onActivityResult将被称为
  • onActivityResult开始编辑信息活动

您可以从此答案中找到有关管理活动的具体信息: How to manage `startActivityForResult` on Android?

PD:我无法测试代码,自从我为Android编写代码以来已经有一段时间了。如果我回到家,我可以毫不费力地开始一个小型的android项目,我会发布一些例子。

答案 2 :(得分:0)

  

我想在开始新活动之前打开相机。

然后,在startActivity()来自EnterInfoActivity活动的onActivityResult()来电之前,请勿致电ACTION_IMAGE_CAPTURE ACTION_IMAGE_CAPTURE。因此,您等待It's because that's how it is然后的结果开始下一个活动。

相关问题