从android片段中的相机拍照是行不通的

时间:2014-05-08 06:09:13

标签: android camera fragment

能从画廊拍摄照片但是从片段的照相机捕获发现了问题。 拍摄onActivityResult后拍摄的照片有时被调用,当调用它时会发现一些未找到的异常文件。

我的代码是

if (requestCode == CAMERA_REQUEST && resultCode == getActivity().RESULT_OK) {
if(flag==0){
    try{                   
       String URI = getImageURI();
       String imageName = URI.substring(URI.lastIndexOf("/")+1);
       FileInputStream fis = mContext.openFileInput(imageName);
       Bitmap photo = BitmapFactory.decodeStream(fis);
       Matrix matrix = new Matrix();
       matrix.preRotate(90);
       photo = Bitmap.createBitmap(photo , 0, 0, photo.getWidth(),    photo.getHeight(), matrix, true);
    }
    catch(Exception e){ 
            Log.e("Error - ",e.getMessage());
    }
   }
 }

 public void takePictureFromCamera(){
              File style = new File(Environment.getExternalStorageDirectory(),"style");
      if(!style.exists()){style.mkdir();}
        String d = System.currentTimeMillis()+"";
        File f = new File(style, d+"style.jpg");
        absPath = f.getAbsolutePath();
        savePref(absPath);
        cameraImagePath = Uri.fromFile(f);
        takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, cameraImagePath);
        }
        getActivity().startActivityForResult(takePictureIntent, CAMERA_REQUEST);
  }

1 个答案:

答案 0 :(得分:1)

以下是我处理onActivityResult方法问题的步骤。

我有一个MainActivity和一个子Fragment。 现在我的Fragment的onActivityResult没有被调用,而是调用MainActivity' s(super)onActivityResult。 下面是示例代码片段以使其正常工作

  1. 这个" onActivityResult"我已经在我的主要活动中被覆盖了,如果需要,我在这里调用子片段的onActivityResult方法。

    protected void onActivityResult(int requestCode,int resultCode,Intent data)

    {
        super.onActivityResult(requestCode, resultCode, data);
    
        switch (requestCode) 
          {
        case Session.DEFAULT_AUTHORIZE_ACTIVITY_CODE:
        {
            Fragment fragment = getFragmentManager().findFragmentById(R.id.content_frame);
            fragment.onActivityResult(requestCode, resultCode, data);
        }
    
            break;
    
        default:
            break;
        }       
    }
    
  2. " content_frame"是我的主要活动的XML文件中的框架布局

    <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    

    我开始,我的个人资料片段在MainActivity类中以这种方式分段

    ProfileFragment fragment = new ProfileFragment();
       Bundle args2 = new Bundle();
       args2.putInt(ActivityFeedFragment.ARG_NAVIGATIN_LIST_NUMBER, position);
       args2.putString(Utils.serfrmuserid, AssetPref.getString(Utils.User_ID, null));
       fragment.setArguments(args2);
    
       FragmentManager fragmentManager2 = getFragmentManager();
       fragmentManager2.beginTransaction().replace(R.id.content_frame, fragment).commit();