一种方法可以使用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