2013-08-12 71 views
0

我有2個活動:A,B:
A會啓動B.
但是我想讓B點擊「返回」按鈕可以回到桌面,但不能回到A活動。仍然回覆意向和Android

Intent NewActivity = new Intent(); 
NewActivity.setClass(A.this, B.class); 
NewActivity.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
startActivity(NewActivity); 

但同時單擊後退按鈕,這回A活動:
我用下面的代碼來啓動活動。
我該怎麼做?

+0

你有沒有嘗試清理你的項目和重建?從設備上刪除應用程序並重新安裝? (startActivity)後的 –

+0

;寫A.this.finish(); – Sushil

+0

或者你可以使用'NewActivity.setFlags(意圖。FLAG_ACTIVITY_CLEAR_TOP);'同時開始B活動 –

回答

2

添加完成()當您啓動活動。

Intent NewActivity = new Intent(); 
NewActivity.setClass(A.this, B.class); 
NewActivity.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
startActivity(NewActivity); 
finish(); 
0

當你開始新的活動,你也可以完成()當前活動像這樣的活動答:

startActivity(new Intent(curentClass.this, newClass.class)); 
finish(); 
+0

如果呼叫到達,這也將完成活動。不建議.. – user370305

+0

不完美的答案 – Tarun

+0

這是一個錯誤的答案。 – user1940676

1

話,我想你的目標是在完成所有堆疊起來活動..

這就是: -

關閉所有的以前的活動如下:

Intent intent = new Intent(A.this, B.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("Exit me", true); startActivity(intent); finish(); 然後在B的onCreate()方法中加入這個來完成B

if(getIntent().getBooleanExtra("Exit me", false)){ finish(); }

或者如果你只是從目前的活動回來,肯定你的應用程序回家只是因爲你的堆棧是空的。

結果與上面相同,但是因爲所有堆疊的活動都已關閉,所以當您回到應用程序時,它必須從您的主要活動(即啓動程序活動)開始。

希望這會有所幫助。

0

這不是件好事。典型的用戶體驗是,他們將回到之前的活動,通過按下後退按鈕。這就是爲什麼每臺設備上都有一個後退和主頁按鈕。 android指南指出,這是正確的行爲。

但是如果你無論如何要做到這一點,你就必須重寫下列方法:

void onBackPressed() 

那會做的伎倆。只需在此啓動MAIN Intent,即可完成。

+1

不想讓用戶簡單地回去,可能是一個有效的設計決策的思想仔細。但是,覆蓋後退按鈕通常是一種不好的做法。程序流程應該由堆棧處理並對其進行操作。 – Eric

+0

我同意@EricTobias - 重寫'onBackPressed()'是應該只在某些情況下完成的事,只有當你知道你在做什麼。 – Squonk

1

試試這個標誌是:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
0

要返回主屏幕,即桌面

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

完成()將只取u到你的第一個畫面即A!