首先我讀this article,但對我來說有點複雜。我所需要的只是進入我想要的活動(如果存在於後退堆棧中,或者在Intent中不啓動Intent),就可以在onBackPressed()覆蓋中進行導航。我應該管理回棧 還是別的?如果是的話如何?如果沒有,那麼簡單的方法是什麼?自定義回導航
PS:我不使用動作條
首先我讀this article,但對我來說有點複雜。我所需要的只是進入我想要的活動(如果存在於後退堆棧中,或者在Intent中不啓動Intent),就可以在onBackPressed()覆蓋中進行導航。我應該管理回棧 還是別的?如果是的話如何?如果沒有,那麼簡單的方法是什麼?自定義回導航
PS:我不使用動作條
解決:如mentioned in this answer,並根據意見,如果我們只想把一個(現有的)活動,以正面,意圖標誌設置爲:
Intent.FLAG_ACTIVITY_REORDER_TO_FRONT
不會創建活動的新情況下,我們想,只是把它前面。如果我們在其中有多個活動,這將非常有用。
你應該重寫第二個活動的onBackPressed()
方法和AndroidManifest.xml
此添加android:launchMode="singleInstance"
到您的第一項活動將從堆棧中推出的第一個活動或創建新的,如果它不堆棧中存在。
這意味着如果第一個活動存在,只是暫停,並不再次將其添加到回棧? – sasan
是的。只有一個背面堆疊活動的實例。 –
在需要的地方使用startActivityForResult()。不要創建同一活動的新實例。也就是說,如果你想回到上一個活動,只需撥打finish()
即可。
Understand different launchmodes
正如上面的鏈接提到,singleInstance
launchMode可能會非常棘手,並可能導致的問題。
你想知道什麼?你如何回到棧上的上一個活動? – AppPhil
@AppPhil我不想讓後退導航的默認操作(轉到上一個活動),我需要去其他地方取決於情況 – sasan
然後,您需要重寫onBackPressed()方法。在那裏你不會調用super.onBackPressed()(那麼你不會去以前的活動)。在你的onBackPressed()中,你可以開始另一個你想要的活動。 – AppPhil