2013-07-17 101 views
1

讓我們假設我有以下活動的順序:從歷史堆棧中刪除的活動

甲 - >乙 - 「ç - > d - >電子

,當我在E會從DI未來希望做一些操作,然後返回到d沒有堆棧保持對E ..所以,如果我有回d,然後按後退按鈕,我將返回到C不Ë

如何做到這一點???

+0

如果你是在d按回去,回到C. – iTurki

+0

我的意思是與後,我給E返回d那麼如果我按回,但我應該回到C –

+0

你會回到C.這不是你想要的嗎? – codeMagic

回答

0

我不知道如果我完全理解這個

如果我回到d,然後按返回鍵,我將返回到C不Ë

但如果我做所有你要做的就是調用finish()當您在大功告成那麼當你按下回D.如果這不是你所談論的,那麼請澄清你的問題是什麼,你將返回到d,然後到C。但是,當你finish()Activity然後將其從堆棧中清除,所以你永遠不會,直到你再次啓動它返回到E。你永遠不會從d反正按後退按鈕

Google I/O Navigation

在其最基本的形式,Activities在他們來。如果你離開一個方式放在堆棧上彼此的頂部,由打電話finish()或按回去,然後它被刪除,你被帶到它之前(你來自哪裏)。還有更多,但這是發生的事情的基本。

+0

我的意思是與後我從回E到D然後如果我按回,但我應該回到C ,,,在哪裏調用完成功能? –

+0

當你在E完成時,你可以調用'finish()'。但是,如果你按下E鍵,它會做同樣的事情。如果你再按回D,你會回到C假設你還沒有清除掉堆棧 – codeMagic

+0

不,我想通過使用Intent而不是按回退按鈕 –

0

而不是創建一個新的回頭的意圖,你應該調用this.finish();關於你不再需要的活動,當用戶按下後退按鈕時,這將被「調用」,另外,如果你正在創建一個新的活動,並且希望在按下時跳過當前活動,您仍然可以撥打this.finish();,然後您可以撥打電話this.startActivity(new Intent(this, ActivityName.class));

1

如果在活動E的Android清單中添加此項,它將不會出現在歷史記錄堆棧中。

android:noHistory="true" 
+0

然後,他會離開應用程序時,按下D – codeMagic

+0

你的意思是E對?不是D –

+0

不是。看到我的回答,我要發佈一個你需要觀看的鏈接。非常有幫助 – codeMagic

0

我覺得這是你怎麼做你的活動堆棧

甲 - >乙 - 「ç - > d - >電子 - > d(按意圖給E推出)。

現在你想從第二個D去到C.要做到這一點,在E中,在你啓動D後調用finish()。這應該從堆棧中刪除E.

-1

如果我理解正確你的問題。

你去到活動-E在A的序列,B,C,d,E 現在你會在活動-d時,你會按後退按鈕。 這裏的問題是:當你再次按後退按鈕,再次進入到活動-E,但你想要去的活動-C在這裏。

所以,你可以用它在動鄂

@Override 
public void onBackPressed(){ 
    finish() ;   // ActivityE.this.finish() 
    super.onBackPressed() ; 
} 
+0

onBackPressed按原樣刪除活動,不需要完成 –