2012-01-29 62 views
2

我有我的應用程序開始時的登錄視圖。在此視圖中登錄時手動完成(即在代碼中調用finish())。這樣一來,當用戶想要退出應用程序時,用戶不必通過登錄頁面後退按鈕。在活動意圖清除導航堆棧

現在我想在應用程序中有一個logout按鈕。這將調用登錄視圖(意圖刪除任何先前存儲的登錄憑證 - 即模擬註銷)。

我需要做的是在這個意圖上清除向後的導航堆棧,否則用戶仍然可以按下並在最初導航時查看應用程序。

現在,Intent.FLAG_ACTIVITY_CLEAR_TOP不起作用,我推測是因爲我的finish() Login活動表示該活動不在回棧中。我也使用Intent.FLAG_ACTIVITY_NEW_TASK這似乎也不工作。用戶仍然可以按下後退按鈕並通過他們應該登錄訪問的活動向後導航。

所以我需要做的是創建一個登錄活動的實例,並使其成爲我的應用程序的新的root活動。

我該怎麼做?

感謝

回答

4

嘗試

Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP 

這是其工作正常,我的應用程序..

homeButton.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 

      Intent intent = new Intent(_context, MainMenuActivity.class); 
      intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
      _context.startActivity(intent); 

      finish();  

      overridePendingTransition(R.anim.slide_right,R.anim.slide_right); 
    } 
}); 
+0

好吧,夥計,謝謝你,我會試試這個。 – 2012-01-29 23:19:58

0

您應該登錄狀態保存到本地數據存儲(可以使用SharedPreferences,或應用程序類,或DB)。

然後,在您的活動的onStart()方法中,您應該檢查登錄狀態,並向用戶顯示相應的用戶界面。

換句話說,跟蹤應用程序某處的登錄狀態 - 然後在每次顯示活動時檢查該狀態以確定是否應顯示登錄視圖。

無論活動的入口點在哪裏,您都可以控制向用戶顯示的內容。

+0

呀,這是一個好主意。我將着眼於實現這個前進。但現在,我會努力讓自己的工作方式。 :) – 2012-01-29 23:20:38