在Android中关闭活动层次结构

时间:2010-09-26 22:02:29

标签: android android-activity android-intent

如何关闭整个活动层次结构并显示当前任务中不存在的新活动?

上下文

考虑在启动时恢复上一个会话的FTP浏览器。每个文件夹都显示在自己的活动中。单击文件夹时,将为该文件夹启动新活动。如果我按后退按钮,应用程序将返回上一个活动,该活动对应于父文件夹。

我可以随时从菜单中注销。注销会带我进入登录活动(当应用程序恢复会话时不显示当前任务),并关闭所有其他活动。我怎么能这样做?

根据我的阅读,如果活动在当前任务中,我可以在意图中使用FLAG_ACTIVITY_CLEAR_TOP,但这不是我的情况。

1 个答案:

答案 0 :(得分:0)

一种方法可以使用startActivityForResult。例如,您的第一个活动是LoginActivity,后续活动是FolderActivity。所以流程将是1。 LoginActivity(启动器活动)
2.文件夹活动(root作为文件夹)
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。

< / p>