2013-11-21 7 views
0

Я пытаюсь щелкнуть фотографию в фрагменте и отобразить ее внутри своего приложения. После того, как я нажму на фотографию, изображение не будет установлено, и я не вижу, как будет отображаться фотография. Кто-нибудь знает, почему?Изображение не отображается после использования камеры для фотосъемки

Как вы думаете, есть ли лучший способ написать код для съемки внутри фрагмента?

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

Вы сравниваете 'ResultCode' с Activity.RESULT_OK (= - 1) в onActivityResult функции.

Replace: если (ResultCode == 1) by: если (ResultCode == Activity.RESULT_OK)

+0

Спасибо, что работает – gazubi

Смежные вопросы