2011-06-21 97 views
0

我有一個要求,我可以從應用程序中的任何活動按註銷按鈕,事情是當我按下注銷按鈕,我需要得到login屏幕沒有顯示以前的活動。我使用:如何清除android中的活動堆棧?

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 

我開始這樣的活動:

public void onClick(View v) { 
    try 
    { 
     Intent intent = new Intent(getContext(), Login.class); 
     v.getRootView().getContext().startActivity(intent); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     removeSessionFiles(); 
     //startActivity (new Intent(getApplicationContext(), Activity1.class)); 
    } 
    catch (Exception e) 
    { 
    String str = e.toString(); 
    } 
} 

我到login屏幕當我按下logout按鈕,但是當我按下設備上back按鈕,它是顯示以前的活動 - 當我按下login屏幕中的返回按鈕時,我應該進入Android主屏幕。請你能爲此提出一個解決方案嗎?

+0

顯示如何啓動活動...因爲設置上述標誌將執行該工作... – Dinash

+0

爲什麼不使用startActivity加載登錄活動並完成當前活動? –

+0

你可以檢查它dinash – amj

回答

1

由於dinash國旗上面說的應該是活動前集合開始......什麼開始活動後,設置標誌點....代碼應該是這個樣子,

Intent intent = new Intent(getContext(), Login.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     v.getRootView().getContext().startActivity(intent); 

     removeSessionFiles(); 
0

豪人只是把標誌設置行只是startactivity前行......這港島線解決您的問題...

希望這有助於...

+0

是的,它解決了我的問題,但仍然有另一個,即當我通過3-4活動,然後按註銷按鈕它不會驅使我到登錄屏幕,而是它帶我去上一個活動再次,如果我現在再次註銷註銷按鈕,那麼它給予登錄屏幕。這是問題,你可以找到我這個請求的解決方案。 – amj

0
調用startActivity將解決你的問題之前

setFlags

public void onClick(View v) { 

try { 
Intent intent = new Intent(getContext(), Login.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
v.getRootView().getContext().startActivity(intent); 
removeSessionFiles(); 
} catch (Exception e) { 
String str = e.toString(); 
} 
}