2017-06-22 102 views
0

首先我讀this article,但對我來說有點複雜。我所需要的只是進入我想要的活動(如果存在於後退堆棧中,或者在Intent中不啓動Intent),就可以在onBackPressed()覆蓋中進行導航。我應該管理回棧 還是別的?如果是的話如何?如果沒有,那麼簡單的方法是什麼?自定義回導航

PS:我不使用動作條

+0

你想知道什麼?你如何回到棧上的上一個活動? – AppPhil

+0

@AppPhil我不想讓後退導航的默認操作(轉到上一個活動),我需要去其他地方取決於情況 – sasan

+0

然後,您需要重寫onBackPressed()方法。在那裏你不會調用super.onBackPressed()(那麼你不會去以前的活動)。在你的onBackPressed()中,你可以開始另一個你想要的活動。 – AppPhil

回答

1

解決:如mentioned in this answer,並根據意見,如果我們只想把一個(現有的)活動,以正面,意圖標誌設置爲:

Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 

不會創建活動的新情況下,我們想,只是把它前面。如果我們在其中有多個活動,這將非常有用。

1

你應該重寫第二個活動的onBackPressed()方法和AndroidManifest.xml此添加android:launchMode="singleInstance"到您的第一項活動將從堆棧中推出的第一個活動或創建新的,如果它不堆棧中存在。

+0

這意味着如果第一個活動存在,只是暫停,並不再次將其添加到回棧? – sasan

+0

是的。只有一個背面堆疊活動的實例。 –

1

在需要的地方使用startActivityForResult()。不要創建同一活動的新實例。也就是說,如果你想回到上一個活動,只需撥打finish()即可。

Understand different launchmodes

正如上面的鏈接提到,singleInstance launchMode可能會非常棘手,並可能導致的問題。

+0

我在第一個Activity中使用了startActivityForResult()之後,現在如何去第二個Activity的另一個Activity中返回導航? – sasan

+0

只需使用'startActivity()'。如果你想在第三個活動中按回來時回到第一個,當你在第二個中調用'startActvity()'時調用'finish()'。 – dustblue