2013-10-19 76 views
1

我有一個包含4個選項卡的應用程序,每個選項卡都有一個ActivityGroup。jellybean中的ActivityGroup的startActivityForResult導致重新啓動應用程序

在一個選項卡,在某些子活動我啓動畫廊拿起一張照片:

意向書I =新意圖(Intent.ACTION_PICK); i.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,MediaStore.Images.Media.CONTENT_TYPE); getParent()。 startActivityForResult(i,Documento.SELECCIONAR_FOTO_FROM_GALLERY);

這是工作正常,直到果凍豆,在此版本中,當我開始使用startActivityForResult活動時,應用程序重新啓動onActivityResult時自動調用。

我知道ActiviyGroup自從很久以前就被棄用了,我應該轉移到片段,但是,有沒有什麼辦法可以在果凍豆中工作而不遷移到碎片?

我試圖修復它打開畫廊作爲的ActivityGroup的childActivity:

 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: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不同,然後在一段時間後通過最近的任務列表返回到您的應用程序。

有沒有什麼辦法可以使這個工作在果凍豆沒有遷移到碎片?

碎片不會幫助,因爲它已經按預期工作。

+0

我不同意,可能我解釋說不好。如果我使用startActivityForResult從ActivityGroup的childActivity啓動任何活動,則應用程序會崩潰,如果我啓動外部應用程序(庫)或同一應用程序的其他活動,則它具有相同的行爲。這在以前的Android版本中是完美的,但是果凍豆4.3殺了我的應用程序。 – jimbo82

+0

@ jimbo82:「如果我使用startActivityForResult從ActivityGroup的childActivity啓動任何活動,則應用程序崩潰」 - 您無法通過「ActivityGroup」或任何其他方式在應用程序中嵌入第三方活動。您可以嘗試,但通常您的應用會崩潰,因爲您的流程無權訪問其他應用的數據等。自從Android 1.0以來,情況一直如此。您的應用已經在許多設備上崩潰,其中設備的'MediaStore'請求的默認活動不支持此嵌入。 – CommonsWare

+0

@ jimbo82:片段也不會幫助您,因爲您無法將第三方活動嵌入到片段中。 – CommonsWare

相關問題