文章目录
我现在一个activity中有三个multiple fragments ,我现在采集我第三个 fragments信息
在这个fragments 上我想启动相机或者图库,看下面代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
public Intent getImageIntent() { // Camera. final List<Intent> cameraIntents = new ArrayList<Intent>(); final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); final PackageManager packageManager = context.getPackageManager(); final List<ResolveInfo> listCam = packageManager.queryIntentActivities(captureIntent, 0 ); for (ResolveInfo res : listCam) { final String packageName = res.activityInfo.packageName; final Intent intent = new Intent(captureIntent); intent.setComponent( new ComponentName(res.activityInfo.packageName, res.activityInfo.name)); intent.setPackage(packageName); cameraIntents.add(intent); } // Filesystem. final Intent galleryIntent = new Intent(); galleryIntent.setType( "image/*" ); galleryIntent.setAction(Intent.ACTION_GET_CONTENT); // Chooser of filesystem options. final Intent chooserIntent = Intent.createChooser(galleryIntent, "Select Source" ); // Add the camera options. chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray( new Parcelable[] {})); // Calling activity should exeecute: // startActivityForResult(chooserIntent, 1); return chooserIntent; } After that the onActivityResult executes: private void handleSmallCameraPhoto(Intent intent) { Bundle extras = intent.getExtras(); mProductBitmap = (Bitmap) extras.get( "data" ); imgProduct.setImageBitmap(mProductBitmap); } |
其中 mProductBitmap 是一个Bitmap类型的全局变量,imgProduct 是一个已经初始化的 ImageView ,
我现在有如下问题:
1、相机选项强制关闭了app.并在fragment 中报错了nullpointException
2、图册选项不报错,但是不显示任何图片
3、有的时候 在执行完onActivityResult 之后Context 为null
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
@Override public void onActivityResult( int requestCode, int resultCode, Intent intent) { if (resultCode == Activity.RESULT_OK) { handleSmallCameraPhoto(intent); } else { if (requestCode == 1 ) { InputStream stream = null ; if (intent == null ) { System.out.println( "DATA IS NULL.." ); } else { try { if (mProductBitmap != null ) { mProductBitmap.recycle(); } stream = getActivity().getContentResolver().openInputStream( intent.getData()); mProductBitmap = BitmapFactory.decodeStream(stream); System.out.println(mProductBitmap); System.out.println( "Setting image result" ); imgProduct.setImageBitmap(mProductBitmap); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (stream != null ) try { stream.close(); } catch (IOException e2) { e2.printStackTrace(); } } } } } |
处理方法
你的图片已经报错到了 PATH_TO_SAVE 地址中
你需要在你的onActivityResult 方法中做么做
File file = new File(PATH_TO_SAVE);
Bitmap bmp = BitmapFactory.decodeFile(file.getPath());
原文地址:http://www.itmmd.com/201411/158.html
该文章由 萌萌的IT人 整理发布,转载须标明出处。