Android:跨菜单切换活动

时间:2013-04-21 21:16:36

标签: android

我有三个活动菜单。跨菜单可以切换活动。我把'android:launchMode =“singleInstance'带到AndroidManifest,因为我仍然对每个Activity进行修改。

 ------------------
|                  |
|                  |
|                  |
|        A         |
|                  |
|                  |
|                  |
|                  |
|------------------|
|##A##|  B  |  C   |
 ------------------
      A Activity

 ------------------
|                  |
|                  |
|                  |
|        B         |
|                  |
|                  |
|                  |
|                  |
|------------------|
|  A  |##B##|  C   |
 ------------------
      B Activity

 ------------------
|                  |
|                  |
|                  |
|        C         |
|                  |
|                  |
|                  |
|                  |
|------------------|
|  A  |  B  |##C## |
 ------------------
      C Activity

这是正常的。我的问题是,当我按下后退键因为我要退出时,我必须按三次才能关闭应用程序。

我想要消除这个程序。因此,当我在A,B或C活动上,并且我按下键时,将它们全部关闭。不知怎的,我想跳回去堆栈。

我尝试使用Activity Flags。例如:

    Intent intent=new Intent(this, B.class);
    intent.setFlag(Intent.FLAG_ACTIVITY_TASK_ON_HOME);
    startActivity(intent);

有了这个我有两个问题。它只支持API 11或更高版本,而不是关闭其他Activity。 (当我再次发射时,我看到其他活动的修改仍然存在) 我知道* Fragment * s,使用它们会更容易,但我必须在没有* Fragment * s的情况下解决。 抱歉我的英语不好。

3 个答案:

答案 0 :(得分:0)

你已经知道Fragments更容易了,建议使用Fragments但是如果你想这样做...在你开始的每个新活动之前调用finish();

Intent intent=new Intent(this, B.class);
startActivity(intent);
finish();

它将完成活动A并开始活动B.这样,如果您在活动B中按回来,您的应用程序将关闭。

答案 1 :(得分:0)

我唯一想到的是一个带有标签的旧式编程,包含活动。

这是一个示例http://www.androidhive.info/2011/08/android-tab-layout-tutorial/

如果您不希望标签可见,则很容易完全隐藏它们。

但我个人建议片段。

答案 2 :(得分:0)

您想要的是自定义Back活动堆栈:

// Creates an explicit intent for the top activity that will be opened (the map)
Intent resultIntent = new Intent(context, <your_activity>.class);
resultIntent.putExtras(extras);

// The stack builder object will contain an artificial back stack for the
// started Activity. This ensures that navigating backward from the 
// Activity leads out of your application to the Home screen.
TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);

// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(<your_activity>.class);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
stackBuilder.startActivities();

该代码本质上正在做的是,回退和下一个活动的活动是相同的。这样,当按下后退时,您将出现在主屏幕上。