2012-01-16 140 views
1

我的Android應用中有活動[A] [B] [C]。 - [A]是LoginActivity - [B]是DashboardActivity - [C]是InventoryListActivity註銷時註銷所有活動

在每個[B]和[C]的活性,那裏有與代碼退出按鈕:

public void doLogout(){ 
     // clear all preferences 

    // Return to the login activity 
    Intent intent = new Intent(getBaseContext(), LoginActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
    startActivity(intent); 

    finish(); 
} 

當我嘗試使用此流程[A] - > [B] - > [C]執行[C]活動中的註銷按鈕時,它確實進入了LoginActivty,但是當我按回按鈕時,它會轉到[B]活動。我想要的是如果後退按鈕按下我想要去Android主屏幕。

請注意,如何在執行註銷功能時銷燬所有活動。

+0

對你有當你從一個活動移動==> B,完成活動完成該活動。從B ==> C完成B.但在這種情況下,您必須管理「後退」按鈕。如果用戶點擊活動B的返回按鈕,然後開始新的活動以完成活動B時轉到活動A. – Sumant

+0

a => b我已經在使用完成活動a。但從b => c我不使用完成活動b,因爲我想如果用戶在c活動中按下後退按鈕它可以去b活動。它有棘手的代碼,而不是在所有活動中使用完成活動? – NeoBeezz

+0

只是檢查出此鏈接詳細給出解釋: http://stackoverflow.com/questions/6330260/finish-all-previous-activities –

回答

3

爲Android手機2.0之前,u可以使用這樣的:覆蓋在你的活動

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { 
     // do something on back. 
     Intent intent = new Intent(getBaseContext(), LoginActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
    startActivity(intent); 

     finish(); 


     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 

爲2.0以上,U可以覆蓋此檢測backpress,做你的任務:

@Override 
public void onBackPressed() { 
// do something on back. 
Intent intent = new Intent(getBaseContext(), LoginActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
     startActivity(intent); 

      finish(); 
return; 
} 

希望它可以幫助你

-3

嘗試

System.exit(0); 

或者

System.exit(1); 

編輯

忽略上述溶液

可以使用自定義撒施接收器進行註銷功能。您需要請點擊此鏈接:

http://androidprogrammers.wordpress.com/2011/02/23/broadcastreceivers-and-context-sendbroadcast/

+0

http://www.linuxquestions.org/questions/programming-9/java-system-exit-0-vs-system-exit-1-a-39993/ –

+0

這是你應該做的最後一件事從Android應用程序中執行... – shkschneider

+0

檢查更新後的答案 –