2013-02-08 56 views
0

我調用這個函數:意圖進行拍照,如果我按回,應用程序崩潰

private void TakePhoto() { 
    LogService.log(TAG, "inTakePicture"); 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/BlueSkyBio/media/", "test.jpg"); 

    outputFileUri = Uri.fromFile(file); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
    startActivityForResult(intent, TAKE_PICTURE); 

} 

這需要我的下一個onActivityResult:

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == TAKE_PICTURE) { 
     if(outputFileUri != null){ 
      LogService.log("MainFragment", outputFileUri.toString()); 
      String path = outputFileUri.toString(); 
      selectedVideoPath = path.substring(7); 
      LogService.log("in take pic", "selectedImagePath: " + selectedVideoPath); 
      Intent paintActivity = new Intent(getActivity(), PaintActivity.class); 
      paintActivity.putExtra("selectedImagePath", selectedVideoPath); 
      paintActivity.putExtra("isVideo", false); 
      startActivity(paintActivity); 
      ((FragmentActivity) getActivity()).finish(); 
     } else{ 
      //    Toast.makeText(getActivity(), "No picture taken", Toast.LENGTH_SHORT).show(); 
      Intent main = new Intent(getActivity(), FragmentActivity.class); 
      startActivity(main); 
      ((FragmentActivity) getActivity()).finish(); 
     } 


    } 

} 

該工程確定,但如果我調用意圖拍照,然後按後退按鈕,如果我以前已經拍過照片,它會加載該照片,如果沒有,它會崩潰,因爲按回來,它不會拍照。我能做些什麼來擺脫這種情況?

我試圖測試:

if(data != null) // instead of: if(outputFileUri != null){ 

但是,這絕不會輸入代碼的「其他」的一部分。

回答

1

使用這些條件:

private static final int CAMERA_PIC_REQUEST = 1337; 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if(requestCode==CAMERA_PIC_REQUEST && resultCode == RESULT_OK){ 

     log.d("something","something");   
    } 
    else if (resultCode == Activity.RESULT_CANCELED) 
    { 
     log.d("something","something"); 
    } 

}

+0

10倍了很多,從現在開始,我一定會用發送resultCode爲好,現在我看到的是多麼容易後覺得愚蠢:P – 2013-02-08 13:22:48