the studio picture intent full example android android-camera android-activity android-camera-intent

android - studio - Actividad cancelada/onCreate llamada después de tomar la foto a través de intento



save the full size photo android studio (3)

Estoy tratando de tomar una foto con un intento. Mi problema es que, a veces, después de tomar una foto, mi actividad, que llama a startActivityForResult, parece destruida, por lo que se llama nuevamente a onCreate.

Aquí está mi código para tomar fotos después de hacer clic en una vista de imagen, que imagen debe ser reemplazada:

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"); } }

Entonces, lo único que intento es tomar una foto y reemplazar la imagen de una imagen con ella. Pero en algunos casos se llama a onCreate después de invocar onActivityResult y se pierde la nueva imagen.

La ayuda es muy apreciada.


En realidad, la cámara causa el cambio de orientación en su actividad y es por eso que su actividad se destruye y recrea.

Agregue esto en su archivo de manifiesto, evitará que cambie la orientación y su actividad no se destruirá ni se volverá a crear.

<activity android:name=".YourActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="portrait" > </activity>


Parece que hay teléfonos que destruyen la actividad al importar una imagen, como Galaxy S3. Se menciona que si mi aplicación está en modo retrato, sucederá porque las imágenes están en modo horizontal. Por lo tanto, todas las sugerencias relacionadas con configChanges en el archivo de manifiesto no son aplicables a esta situación.

Lo que terminé haciendo es en lugar de luchar contra el onDestroy de la actividad (que causó que onActivityResult () del fragmento no se llame después de que onCreate ()) implementara onActivityResult () también en la actividad en sí y allí podría obtener el ruta de la imagen. Luego pasé ese camino al fragmento, una vez que se está creando, para su posterior procesamiento. Por supuesto, tuve que decirle a mi aplicación, una vez que se recrea, que necesita volver a llamar a fragmnet para procesar esa imagen


Repare la Orientación de su Actividad / Aplicación porque cuando retrocede / finaliza () la actividad y al mismo tiempo cambia de orientación, la actividad se actualiza y se reinicia automáticamente.