Android - 如何开始活动链?

时间:2011-10-20 08:32:16

标签: android android-activity

我打算在一个链中启动3个活动(比如从主要打开的活动A,B和C,这对用户是可见的),但我无法找到一些方法在Android中如何做到这一点。不要问我为什么,我只需要这样做就可以恢复我的应用程序状态,以前的位置。

感谢您的任何想法

Waypoint

修改

好的,我尝试在For循环中打开活动,但它们没有正确打开。它们被链接,但只有当我按下后退按钮并且它们显示给我时才重新创建。我需要一些解决方案,导致:打开A,如果A打开检查是否需要打开B - >是的,打开B,检查是否需要打开C - >是的,打开C,无需打开其他活动 - >完成

4 个答案:

答案 0 :(得分:0)

在开始任何活动之前,决定应该开始哪个活动。 让我们看看你的情况>>首先检查B,如果是,检查C,现在打开所需的1。

我理解可比数据在活动中,但正确的数据结构将始终允许您随时随地访问数据。

答案 1 :(得分:0)

对于将来的读者:如果您想以适当的后退堆栈开始活动,则应使用TaskStackBuilder

  1. 通过向应用清单文件中的每个元素添加android:parentActivityName属性来定义活动的自然层次结构
  2. 创建TaskStackBuilder的实例并调用addNextIntentWithParentStack(),并向其传递您要开始的活动的意图。

有关更多详细信息,请参见official documentation

答案 2 :(得分:-1)

您没有提供任何有关您尝试过的信息,因此我会给您最简单的答案:

方法startActivity(Intent intent),更多信息here


编辑:嗯,这个怎么样?我现在周围没有SDK,但我可以提供一个概念。我不确定它是否有效,但我希望它会引导你进入灵魂。

让我们假设这是ActivityA的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (doINeedActivityB) {
        Intent activityC = new Intent(this, ActivityC.class);
        this.startActivity(activityA);
    }
    if (doINeedActivityC) {
        Intent activityC = new Intent(this, ActivityC.class);
        this.startActivity(activityC);
    }
}

答案 3 :(得分:-1)

覆盖每项活动中的onResume - 方法。在那里添加检查和活动的开始。

public void onResume() {
  if( condition )
    startActivity( intentForTheNextActivity );
}

condition是您可能拥有的任何条件(在您的示例中,如果应该启动B,应该启动C等),intentForTheNextActivity是链中以下活动的意图(例如,如果现在在A中,意图是B等。)。


我很难理解你正在尝试做什么。有时似乎它是一条链(A打开B,B打开C等等)有时似乎你想要一些随机流(A打开B,B打开A,A打开B,B打开C) - 这使得它真的很难给你一个具体的答案。

我能做什么,建议您阅读以下内容:

Activity Lifecycle

Starting Activities and getting results(特别是方法startActivityForResultsetResult

如果您需要更多帮助 - 您需要更好地解释自己(可能使用图表或目前为止尝试过的示例代码)。