2013-09-22 160 views
3

我在我的軟活動和一項主要活動中有一個登錄活動。我想要做的是啓動登錄活動,登錄用戶,然後啓動主要活動,並從堆棧中刪除登錄活動,以便用戶可以通過按回退按鈕訪問登錄活動。 Whitch打算用旗幟?如何開始活動並結束之前啓動的所有其他活動

+0

你是什麼意思,這樣用戶就可以接取的登錄活動也應該是這樣的用戶無法訪問登錄活動。 –

+0

,他不能後退按鈕接取僅與新打算的它會在停止的情況下的主要活動的防止錯誤和問題reloging用戶而他不退出 –

回答

2
Intent intent = new Intent(currentClassYoureIn.this, newClassYouWantToBeIn.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // closes all activities that were started after "newClassYouWantToBeIn" 
startActivity(intent); 

也就是說,或者你可以只啓動新的意圖,然後使用方法finish()關閉當前活動(即你開始在新的意圖):

Intent intent = new Intent(currentClassYoureIn.this, newClassYouWantToBeIn.class); 
startActivity(intent); 
finish(); // closes "currentClassYoureIn" and now "newClassYouWantToBeIn" is the only activity up 
+1

Intent.FLAG_ACTIVITY_CLEAR_TOP沒有完成所有活動。例如,你有4個活動,A,B,C,和d,並且流程是 A - >乙 - 「ç - > d ,現在當你在d要啓動活動B(從堆棧而不是新實例),那麼你可以使用這個意圖標誌。而且它所做的就是刪除B之上的所有其他活動(這裏C和D不是A)。所以新的狀態將是A - > B。更多信息請參閱本http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP –

+1

如果你的建議是這樣的意向意圖=新意圖(Login.this,main.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);相信我,我不會完成登錄活動。請檢查 –

+0

如果他只想完成登錄活動,他可以簡單地啓動主要活動,然後調用完成功能。像Intent intent = new Intent(LoginActivity.this,mainActivity.class); \t \t \t \t startActivity(意向); \t \t \t \t光潔度(); –

1

好吧,我也最近處理此問題。您需要覆蓋onBackPressed()方法以限制按下後退按鈕的操作。

所以你應該做的是,在主要活動寫,

public void onBackPressed() { 

new AlertDialog.Builder(this) 
     .setTitle("Alert") 
     .setMessage("Please Log out first.") 
     .setpositiveButton("Ok", null) 
      .create().show(); 
} 

這樣,用戶無法返回到登錄頁面,而不在MainActivity頁面註銷。

又看了一下使用的finish()

This可能help.Check出來。

+0

那麼AlertDialog如何影響任務堆棧呢? –

相關問題