如何在Android应用程序中单击后退按钮时避免使用startActivityForResult

时间:2011-09-16 15:25:00

标签: android button camera back

在我的应用程序中单击按钮时,它会打开相机以捕获图像。相机代码如下......

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
             file = new File(Environment.getExternalStorageDirectory(),  String.valueOf(System.currentTimeMillis()) + ".jpg"); 
             Log.e("ffffffffffiiiiiiiiilllllllllle ",""+file);
             f = String.valueOf(file);
             mCapturedImageURI = Uri.fromFile(file);
             Log.e("outputFileUri ",""+mCapturedImageURI);
             setupImage(intent);
             intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 
             startActivityForResult(intent, 3);

启动活动结果我显示一个带有两个按钮的警告框。如果单击button1,图像将上传到网址,如果单击按钮2,则会将其上传到其他网址。

现在问题是如果相机被打开并且没有捕获图像,则返回到用户用来单击后退按钮的上一个活动,此时也会出现警告框。用户单击按钮1或按钮2,应用程序崩溃。

如何在未按下图像的情况下按下后退按钮时避开警告框。

3 个答案:

答案 0 :(得分:4)

onActivityResult()内 首先检查结果是否为O.K.如果它是O.K那么你可以继续下一步。否则什么都不会被处理。

public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode == Activity.RESULT_OK )
    {
        if(requestCode == CAMERA_ACTIVITY)
        //PROCESS YOUR LOGIC
    }

}

答案 1 :(得分:2)

按下后退时,您将在onActivityResult()的{​​{1}} {{}}}中获得RESULT_CANCELED

答案 2 :(得分:1)

在捕获图像时采用布尔flag设置为true,并在显示警告框之前检查标记值...即flag值是{{1}然后显示对话