Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Activity killed / onCreate called after taking picture via intent

I am trying to take a picture using an intent. My problem is that sometimes after taking a picture my activity, which calls startActivityForResult, seems to be destroyed so that onCreate is called again.

Here is my code for taking pictures after clicking an imageview, which image should be replaced:

if (!getPackageManager().hasSystemFeature(                 PackageManager.FEATURE_CAMERA)) {             Util.makeLongToast(R.string.lang_no_camera);         } else {             Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);             startActivityForResult(intent, TAKE_ITEM_PHOTO);         } 

...

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {     Log.v(TAG, "onactivityresult called");     if (requestCode == TAKE_ITEM_PHOTO) {         if (data != null) {              imageUri = data.getData();                   try {                     img_photo.setImageBitmap(Media.getBitmap(                             getContentResolver(), imageUri));             } catch (FileNotFoundException e) {                     // TODO Auto-generated catch block                     e.printStackTrace();                 } catch (IOException e) {                     // TODO Auto-generated catch block                     e.printStackTrace();                 }          } else             Log.w(TAG, "data is null");     } } 

So all i try is to take a picture and replace the image of an imageview with it. But in some cases onCreate is called after onActivityResult was called and the new image is lost.

Help is greatly appreciated.

like image 218
Cattivo Avatar asked May 02 '12 09:05

Cattivo


People also ask

Is onCreate always called?

The Android documentation says the method onCreate is called only when is starting or when is destroyed. Why is this happening? Thanks!! Regars.

Is Onactivityresult called before onCreate?

Yes, always in this order.


1 Answers

Actually the camera causes the orientation change in your activity that is why your activity is being destroyed and recreated.

Add this in your manifest file it will prevent the orientation change and your activity will not get destroyed and recreated.

<activity     android:name=".YourActivity"     android:configChanges="orientation|keyboardHidden|screenSize"     android:screenOrientation="portrait" > </activity> 
like image 156
Akram Avatar answered Sep 21 '22 07:09

Akram