1

在我的Android應用程序中,我試圖確保某些活動應該在導航到它時始終置於後臺堆的根部。任務的根安卓活動

例如,用戶啓動A-> B-> C-> D活動。成像A - 啓動畫面(帶有NoHistory = true),B - 主頁面,C,D - 一些詳細信息頁面。在詳細信息頁面(D)用戶有能力參加主要活動(B)。 B-C-D backstack用戶按下「Go To B」按鈕並導航到現有家庭活動(B),同時C,D活動停止並銷燬。我爲我的B活動使用了SingleInstance,在這種情況下它工作正常。

我有這種情況,這不適合我。在啓動畫面上,我可以發現我應該跳過主頁並直接進入其中一個詳細信息頁面(例如D)。在這裏,當我回到主頁時,我的後臺是錯誤的:D-> B而不是僅僅B.

在我的情況下,哪些標誌或屬性更適合。可能是更新應用程序導航邏輯更有效的方法?

謝謝你的任何建議!

+0

您使用的是片段還是活動? –

+0

只是通常的活動 –

回答

1

在答:

Intent intent = new Intent(B.class, this); 
startActivity(intent); 
finish(); //finish A behind you so you can only explicitly return to it 

在B,兩種方法的按鈕,我猜,這讓你無論是C或d到:

public void buttonToC(View view){ 
    Intent intent = new Intent(C.class, this); 
    startActivity(intent); 
} 

public void buttonToD(View view){ 
    Intent intent = new Intent(D.class, this); 
    startActivity(intent); 
} 

在C和d,您可以選擇完成活動,如果你壓回:

public void onBackPressed(){ 
    Intent intent = new Intent(B.class, this); 
    startActivity(intent); 
    finish(); // optional 
} 

所以A - > B和A完成。從B→C或D,但B仍在後臺運行。當在C或D中時,按回來引起背景活動,B這應該起作用。

+0

通過調用finish()從細節活動(C,D)導航返回正常工作。正如我所看到的,我可以在沒有任何修改默認活動激活行爲的特殊屬性和標誌的情況下實現我的目標。不幸的是我使用的是使用默認導航方法的框架(MvvmCross),我不想改變邏輯,但改變活動的屬性和標誌來實現我的目標。可能嗎? –

+1

標準活動流程應該足夠,但請參閱http://developer.android.com/guide/components/tasks-and-back-stack.html是否有幫助。 – mike