能从画廊拍摄照片但是从片段的照相机捕获发现了问题。 拍摄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);
}
答案 0 :(得分:1)
以下是我处理onActivityResult方法问题的步骤。
我有一个MainActivity和一个子Fragment。 现在我的Fragment的onActivityResult没有被调用,而是调用MainActivity' s(super)onActivityResult。 下面是示例代码片段以使其正常工作
这个" 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;
}
}
" 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();