2015-06-29 64 views
0

我有3個活動:A,B和C,代表3個網頁表單頁面。 A是B的父親活動,B是C的父親活動。我已使用android:launchMode="singleTop"正確實施了上行導航。當我獲得的信息是A時,B中的信息和C中的信息,當我處於活動C時,我會再次點擊,並且活動B中的信息顯示出來。然後我再次點擊,並從活動a的信息出現。兒童活動在Up導航中被破壞

然後,當我從活動A轉到活動B時會出現問題。自然,我保存在第二頁上的信息我希望在那裏,但它會重新創建活動B並且所有信息都會丟失。如何讓活動B恢復並且不讓活動遭到破壞。我在文檔中讀到,當使用Up Navigation時,當前活動被破壞,並且從後面棧中的活動恢復。我不知道如何實現這一點。

任何幫助,非常感謝。

編輯:更多我想要什麼的視覺表示。這是從文檔:

enter image description here

正如圖片中看到,當背部,而當前的活動是按活動3,活動3被摧毀。我不希望發生這種情況。活動3是否可以保存,以便稍後恢復?

回答

1

docs

類似的解決方案,如果您導航到當前堆棧上的活動,其行爲是由父活動的啓動模式決定。如果父級活動具有啓動模式singleTop(或者上級意圖包含FLAG_ACTIVITY_CLEAR_TOP),則父級會被帶到堆棧的頂部,並且其狀態將被保留。導航意圖由父活動的onNewIntent()方法接收。如果父活動具有啓動模式標準(並且向上意圖不包含FLAG_ACTIVITY_CLEAR_TOP),則當前活動及其父項都從堆棧彈出,並且創建父活動的新實例以接收導航意圖。

要回答你的問題,整體NO

你從AB去;那麼從B回到A,你想保存B?返回到B繼續執行任務的概率是什麼 - 所以它會被殺死並重新啓動。

爲了提供某種解決方案,使用ActivityGroup它被廢棄或(IM真的不知道這是否會工作)-CHANGE launchmode="singleTop"singleInstance並覆蓋其onBackPressed()啓動一個新的Activity調用,從而引發它,你可以在活動得到引發它的活動getIntent() ..這裏的邏輯是singleInstance駐留在一個不同的任務中,並且不允許其他活動,所以它的殺死條件,它不會死亡,當一個新的Activity被觸發時,你的接受活動有其lauchmode和它的根源,你在那裏沒有問題。該onBackPressed的首要是防止正常流動..

希望它可以幫助這個時間,但總體NO

+0

正如我的問題說。活動A和活動B在Manifest中都有'android:launchMode =「singleTop」'。這並沒有解決我的問題。活動B仍在被重新創建,而不是被恢復。 –

+0

檢查我的編輯Sir @ VishwaIyer – Elltz