2013-10-19 6 views
1

4 개의 탭이있는 응용 프로그램이 있으며 각 응용 프로그램에 ActivityGroup이 있습니다.jellybean의 ActivityGroup에서 startActivityForResult가 재시작 응용 프로그램을 다시 시작합니다.

는 하나 개의 탭에서 특정 자식 활동에 난 사진을 데리러 갤러리를 시작 :

의도 I = 새로운 의도 (Intent.ACTION_PICK를); (미디어 저장소. getParent(). startActivityForResult (i, Documento.SELECCIONAR_FOTO_FROM_GALLERY);

이 버전에서는 젤리 빈까지 잘 동작했습니다.이 버전에서는 startActivityForResult를 사용하여 작업을 시작할 때 onActivityResult를 호출해야 응용 프로그램이 자동으로 다시 시작됩니다.

오래 전부터 ActiviyGroup이 사용되지 않으므로 Fragments로 이동해야한다는 것을 알고 있지만 Fragments로 마이그레이션하지 않고 Jelly Bean에서이 작업을 수행 할 수있는 방법이 있습니까?

 Intent i = new Intent(Intent.ACTION_PICK) ; 
     i.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media.CONTENT_TYPE) ; 
     TabGroupActivity parentActivity = (TabGroupActivity)MyActivity.this.getParent(); 
     parentActivity.startChildActivity("MyGalleryActivity", i); 
     dialog.cancel(); 

하지만 난 다음 예외를 얻을 :

10-19 16 : 10 : 48.403을 : 나는 그것이 ActivityGroup의 childActivity로 갤러리를 여는 해결하기 위해 노력하고있어

E를/AndroidRuntime (9237) : java.lang.SecurityException : com.sec.android.gallery3d (uid 10112 사용)의 코드가 jaime.mapas 프로세스에서 실행 됨 (uid 10165 사용)

아이디어가 있습니까?

는 편집 :

마지막으로 나는 매우 쉽게 내가 생각했던 것보다, 조각 움직였다.

+0

"응용 프로그램 다시 시작"이란 "응용 프로그램이 자동으로 다시 시작"하는 것을 의미합니까? – CommonsWare

+0

응용 프로그램이 다시 시작되고 종료되고 다시 시작됩니다 (실행 프로그램 활동이 표시됨). 그리고 LogCat은 그것에 대해 아무 말도하지 않습니다. – jimbo82

답변

0

이 버전에서는 젤리 빈까지 잘 동작했습니다.이 버전에서는 startActivityForResult를 사용하여 작업을 시작할 때 onActivityResult를 호출해야 응용 프로그램이 자동으로 다시 시작됩니다.

이것은 예상되는 동작입니다. 앱의 프로세스가 포 그라운드에 있지 않을 때 메모리에 남아 있다는 보장은 없습니다. 사용자가 HOME을 누른 다음 나중에 최근 작업 목록을 통해 나중에 앱으로 돌아온 경우와 다릅니다.

Fragments로 마이그레이션하지 않고 jelly bean에서이 작업을 수행 할 수있는 방법은 무엇입니까?

단편은 이미 예상대로 작동하므로 도움이되지 않습니다.

+0

나는 동의하지 않을 것이다. 아마도 나는 그것을 나쁘게 설명했다. startActivityForResult를 사용하여 ActivityGroup의 childActivity에서 모든 활동을 시작하면 응용 프로그램이 충돌하고 외부 응용 프로그램 (갤러리) 또는 동일한 응용 프로그램의 다른 활동을 시작하면 동일한 동작을합니다. 이것은 이전 Android 버전에서 완벽하게 작동했지만 jelly bean 4.3을 사용하면 내 응용 프로그램을 종료 할 수 있습니다. – jimbo82

+0

@ jimbo82 : "startActivityForResult를 사용하여 ActivityGroup의 childActivity에서 어떤 액티비티를 시작하면 애플리케이션이 충돌합니다."- 앱에 타사 액티비티를 임포팅 할 수 없으며, "ActivityGroup"또는 다른 방법을 통해 임베드 할 수 없습니다. 시도 할 수는 있지만 일반적으로 프로세스는 다른 앱의 데이터 등에 대한 권한이 없기 때문에 앱이 다운됩니다. Android 1.0부터이 문제가 발생했습니다. 앱이 이미 많은 기기에서 충돌하고 있었는데, 기기의 기본 동작 인 'MediaStore'요청이이 삽입을 지원하지 않았습니다. – CommonsWare

+0

@ jimbo82 : 프래그먼트는 타사 작업을 프래그먼트에 포함 할 수 없으므로이 작업에 도움이되지 않습니다. – CommonsWare