使用相机拍照后不显示图片

时间:2013-11-21 01:34:14

标签: android android-fragments

我正在尝试点击片段中的照片并将其显示在我的应用内。单击照片后,未设置imageView,我看不到照片显示。有谁知道为什么?

您是否认为有更好的方法来编写片段内的图片?

public class ImageFragment extends Fragment{


private Uri imageUri;
private String mPath;
private ImageView image;
Bitmap bitmap = null;
private File tempPhoto;
 @Override 
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
   { 
     View v = inflater.inflate(R.layout.fragment_image, container, false);
     ImageButton snap=((ImageButton)v.findViewById(R.id.snap));
     image = ((ImageView) v.findViewById(R.id.image));
     snap.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View arg0) {

                Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                File imagePath;

                try
                {
                    tempPhoto = createTemporaryFile("picture", ".png");
                    tempPhoto.delete();
                }

                catch(Exception e)
                {

                    return ;
                }

                imageUri = Uri.fromFile(tempPhoto);
                cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
                startActivityForResult(cameraIntent, 1);

            }
        });

     return v;
  }

 private File createTemporaryFile(String part, String ext) throws Exception
    {
        File tempDir= Environment.getExternalStorageDirectory();
        tempDir=new File(tempDir.getAbsolutePath()+"/.temp/");
        if(!tempDir.exists())
        {
            tempDir.mkdir();
        }
        return File.createTempFile(part, ext, tempDir);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
       // super.onActivityResult(requestCode, resultCode, data);
        ContentResolver cr = getActivity().getContentResolver();
        try {
            cr.notifyChange(imageUri, null);
            File imageFile = new File(tempPhoto.getAbsolutePath());


        } catch (Exception e) {
            e.printStackTrace();
        }

            Bitmap photo=null;
            if (resultCode == 1) {
                try {
                    photo = android.provider.MediaStore.Images.Media.getBitmap(cr, Uri.fromFile(tempPhoto));
                    image.setImageBitmap(photo);
                } catch (FileNotFoundException e) {

                    e.printStackTrace();
                } catch (Exception e) {

                    e.printStackTrace();
                }
            }

    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }

    @Override
    public void onLowMemory() {
        // TODO Auto-generated method stub
        super.onLowMemory();
    }

}

1 个答案:

答案 0 :(得分:1)

在onActivityResult函数中将'resultCode'与Activity.RESULT_OK(= - 1)进行比较。

  

Replace:    if(resultCode == 1)   by:    if(resultCode == Activity.RESULT_OK)