一種方法可以使用startActivityForResult。因此,例如,您的第一個活動是LoginActivity,後續活動是FolderActivity的活動。所以流將
1. LoginActivity(發射活動)
2.文件夾活動(如根文件夾)
3. FolderActivity(點擊文件夾的內容)...等等
所以現在使用startAcitivityForResult啓動任何新的文件夾活動。
public class LoginActivity extends Activity {
onCreate() {
}
onLogin() {
startActivityForResult(intent, 100 /*some request code*/); //start Folder Activity,
}
@override
onActivityResult(int requestCode, int resultCode, Intent intent) {
if(requestCode == 100 && resultCode == LOGOFF_ACTION) {
//sign out and show the login screen
}
}
public class FolderActivity extends Activity{ onCreate() { } onClickOnSomeFolder() { startActivityForResult(intent /*with folder details etc*/, 100); } @override onActivityResult(int requestCode, int resultCode, Intent intent) { if(requestCode == 100 && resultCode == LOGOFF_ACTION) { setResult(resultCode, intent); finish(); } else if(requestCode == 100 && resultCode == BACK_BUTTON) { /*No need to finish this activity*/ } } onBackButton(){ setResult(BACK_BUTTON, intent); finish(); } onLogOff(){ setResult(LOGOFF_ACTION, intent); finish(); } }
所以現在如果用戶選擇使用菜單退出,那麼活動將以相同的順序開始完成,直到達到LoginActivity。
感謝bhups!這就是我們現在正在做的事(我們的常量被稱爲RESULT_KILLER_VIRUS:P),但它看起來非常複雜且容易出錯。希望有更好的解決方案。 – hpique 2010-09-27 08:03:50
如何將ActivityGroup與LocalActivityManager結合使用?您可以擁有LoginActivity和FolderActivityGroup。使用LocalActivityManager啓動FolderActivity,當用戶註銷時,您可以通過調用LocalActivtyManager.removeAllActivities()來銷燬FolderActivityGroup中的所有活動。 – bhups 2010-09-27 08:42:01