簡體   English   中英

維護活動之間的后退堆棧

[英]Maintaining the Back Stack between Activities

我的問題是假設我們有4個活動。

A-> B-> C-> D

在活動C中,我傳遞了一個前往D的意圖,然后再次從D返回到C.從C中的D獲得所需的結果之后,我運行了一個異步任務,之后我必須回到B.現在當我在B處按BackBack(而不是A),活動變為

B-> C-> B-> A。

這肯定是一個重復的問題,但沒有得到我問題的正確答案。

將活動B,C,D的上下文存儲在這樣的靜態變量中

活動C
private static B bContext; 
     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_b);
            clearAllTasks();
            bContext=this;
    }
 private void clearAllTasks() {
        if(D.dContext!=null)
            D.dContext.finish();
        if(C.cContext!=null)
            C.cContext.finish();
        if(B.bContext!=null)
            B.bContext.finish();
    }

在活動D和活動B中也做同樣的事情

 private static B bContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_b); clearAllTasks(); bContext=this; } private void clearAllTasks() { if(D.dContext!=null) D.dContext.finish(); if(C.cContext!=null) C.cContext.finish(); if(B.bContext!=null) B.bContext.finish(); } 

像這樣你可以清除你的棧,從活動B它將完成所有其他活動。

如果您要進入活動B而沒有從活動C或D調用意圖,則可以調用clearAllTasks(); onResume()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM